You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus应用周期性出现token recognition error at: '^@'问题求助

问题:Quarkus微服务周期性出现token recognition error at: '^@'异常

运行基于Quarkus、Vert.x/Mutiny、Panache和Hibernate的微服务,每隔约一个月,部分操作会抛出token recognition error at: '^@'错误。怀疑应用栈某层的查询缓存损坏,但不知从何入手排查,求有类似问题排查经验的人指点。

堆栈跟踪

ERROR c.e.h.q.ExceptionHandler [vert.x-eventloop-thread-0] Unhandled error Internal Server Error: java.lang.IllegalArgumentException: org.hibernate.query.SyntaxException: At 1:65, token recognition error at: '^@' [FROM MyEntity WHERE instanceId^@^@^@^@^@]
        at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:143)
        at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:167)
        at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:173)
        at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:848)
        at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:753)
        at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:136)
        at io.quarkus.hibernate.orm.runtime.session.TransactionScopedSession.createQuery(TransactionScopedSession.java:367)
        at org.hibernate.engine.spi.SessionLazyDelegator.createQuery(SessionLazyDelegator.java:558)
        at org.hibernate.engine.spi.SessionLazyDelegator.createQuery(SessionLazyDelegator.java:67)
        at org.hibernate.Session_OpdLahisOZ9nWRPXMsEFQmQU03A_Synthetic_ClientProxy.createQuery(Unknown Source)
        at io.quarkus.hibernate.orm.panache.common.runtime.CommonPanacheQueryImpl.createBaseQuery(CommonPanacheQueryImpl.java:366)
        at io.quarkus.hibernate.orm.panache.common.runtime.CommonPanacheQueryImpl.createQuery(CommonPanacheQueryImpl.java:344)
        at io.quarkus.hibernate.orm.panache.common.runtime.CommonPanacheQueryImpl.singleResultOptional(CommonPanacheQueryImpl.java:315)
        at io.quarkus.hibernate.orm.panache.runtime.PanacheQueryImpl.singleResultOptional(PanacheQueryImpl.java:174)
        at org.example.MyStore.getInstance(MyStore.java:85)
        at org.example.MyStore_Subclass.getInstance$$superforward(Unknown Source)
        at org.example.MyStore_Subclass$$function$$1.apply(Unknown Source)
        at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:73)
        at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:62)
        at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:136)
        at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:107)
        at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.doIntercept(TransactionalInterceptorRequired.java:38)
        at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.intercept(TransactionalInterceptorBase.java:61)
        at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.intercept(TransactionalInterceptorRequired.java:32)
        at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired_Bean.intercept(Unknown Source)
        at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:42)
        at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:30)
        at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:27)
        at org.example.MyStore_Subclass.getInstance(Unknown Source)
        at org.example.MyStore_ClientProxy.getInstance(Unknown Source)
        at org.example.MyWebServiceImpl.lambda$files$1(MyWebServiceImpl.java:84)
        at io.smallrye.context.impl.wrappers.SlowContextualSupplier.get(SlowContextualSupplier.java:21)
        at io.smallrye.mutiny.operators.uni.builders.UniCreateFromItemSupplier.subscribe(UniCreateFromItemSupplier.java:28)
        at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
        at io.smallrye.mutiny.operators.uni.UniRunSubscribeOn.lambda$subscribe$0(UniRunSubscribeOn.java:27)
        at io.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:582)
        at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
        at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
        at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:1583)

相关代码

getInstance()方法仅调用PanacheRepositoryBase::find("instanceId", instanceId),代码如下:

public class MyStore implements PanacheRepositoryBase<MyEntity, String> {
    // ..SNIP other methods    

    @Transactional
    public MyOtherEntity getInstance(String instanceId) {
        var entity = find("instanceId", instanceId).singleResultOptional().orElse(null);
        return entityMapper.map(entity);
    }
}

环境信息

  • 未编译为原生代码
  • 服务运行在AWS实例中,已完全重启但错误仍存在
  • 当前使用Quarkus 3.7.1,其他版本也出现过该问题

内容的提问来源于stack exchange,提问作者Rasmus Faber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 08:44:57