-
|
I am running a scheduled method every 10 seconds, polling the database for new entries, processing them and finally updating their status. If I stop the app for redeployment, the transaction is immediately aborted but the method continues to run through to the end. This leads to the following errors: 2025-10-29 10:37:24,691 WARN [org.apa.kaf.com.sec.ker.KerberosLogin] (kafka-kerberos-refresh-thread-XXX) [Principal=XXX]: TGT renewal thread has been interrupted and will exit.
2025-10-29 10:37:25,167 WARN [io.agr.pool] (main) Datasource '<default>': [jcc][t4][10251][10308][4.34.30] java.sql.Connection.close() wurde angefordert, w▒hrend eine Transaktion ▒ber die Verbindung ausgef▒hrt wird.
Die Transaktion bleibt aktiv. Die Verbindung kann nicht geschlossen werden. ERRORCODE=-4471, SQLSTATE=null
2025-10-29 10:37:25,176 WARN [com.arj.ats.arjuna] (Transaction Reaper) ARJUNA012117: TransactionReaper::check processing TX 0:ffff0aa542aa:dd41:6901e050:0 in state RUN
2025-10-29 10:37:25,176 WARN [com.arj.ats.arjuna] (Transaction Reaper Worker 0) ARJUNA012095: Abort of action id 0:ffff0aa542aa:dd41:6901e050:0 invoked while multiple threads active within it.
2025-10-29 10:37:25,177 WARN [com.arj.ats.arjuna] (Transaction Reaper Worker 0) ARJUNA012381: Action id 0:ffff0aa542aa:dd41:6901e050:0 completed with multiple threads - thread executor-thread-1 was in progress with java.base/java.lang.Thread.sleep0(Native Method)
java.base/java.lang.Thread.sleep(Thread.java:558)
java.base/java.util.concurrent.TimeUnit.sleep(TimeUnit.java:446)
XXX.service.GatewayBackupService.checkForNewEntries(GatewayBackupService.java:96)
XXX.service.GatewayBackupService_ClientProxy.checkForNewEntries(Unknown Source)
XXX.service.GatewayBackupService_ScheduledInvoker_checkForNewEntries_ff76ea86a86aefa93eb77a1086c353ebbeba13c3.invokeBean(Unknown Source)
io.quarkus.scheduler.common.runtime.DefaultInvoker.invoke(DefaultInvoker.java:25)
io.quarkus.scheduler.common.runtime.DelegateInvoker.invokeDelegate(DelegateInvoker.java:29)
io.quarkus.scheduler.common.runtime.StatusEmitterInvoker.invoke(StatusEmitterInvoker.java:35)
io.quarkus.scheduler.common.runtime.DelegateInvoker.invokeDelegate(DelegateInvoker.java:29)
io.quarkus.scheduler.common.runtime.SkipConcurrentExecutionInvoker.invoke(SkipConcurrentExecutionInvoker.java:37)
io.quarkus.scheduler.common.runtime.DelegateInvoker.invokeDelegate(DelegateInvoker.java:29)
io.quarkus.scheduler.common.runtime.DelegateInvoker.invokeComplete(DelegateInvoker.java:36)
io.quarkus.scheduler.common.runtime.OffloadingInvoker$2.call(OffloadingInvoker.java:54)
io.quarkus.scheduler.common.runtime.OffloadingInvoker$2.call(OffloadingInvoker.java:51)
io.vertx.core.impl.ContextImpl.lambda$executeBlocking$4(ContextImpl.java:192)
io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:270)
io.vertx.core.impl.ContextImpl$1.execute(ContextImpl.java:221)
io.vertx.core.impl.WorkerTask.run(WorkerTask.java:56)
io.quarkus.vertx.core.runtime.VertxCoreRecorder$15.runWith(VertxCoreRecorder.java:650)
org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651)
org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630)
org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622)
org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589)
org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:11)
org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:11)
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
java.base/java.lang.Thread.run(Thread.java:1583)
2025-10-29 10:37:25,177 WARN [com.arj.ats.arjuna] (Transaction Reaper Worker 0) ARJUNA012108: CheckedAction::check - atomic action 0:ffff0aa542aa:dd41:6901e050:0 aborting with 1 threads active!
2025-10-29 10:37:25,184 WARN [org.hib.orm.jta] (Transaction Reaper Worker 0) HHH90007020: Transaction afterCompletion called by a background thread; delaying afterCompletion processing until the original thread can handle it. [status=4]
2025-10-29 10:37:25,184 WARN [com.arj.ats.arjuna] (Transaction Reaper Worker 0) ARJUNA012121: TransactionReaper::doCancellations worker Thread[#50,Transaction Reaper Worker 0,5,main] successfully canceled TX 0:ffff0aa542aa:dd41:6901e050:0
2025-10-29 10:37:32,063 WARN [io.qua.nar.jta.RequestScopedTransaction] (executor-thread-1) Rolling back transaction that was not committed or explicitly rolled back.
2025-10-29 10:37:32,063 ERROR [io.qua.nar.jta.run.NotifyingUserTransaction] (executor-thread-1) Failed to fire @BeforeDestroyed(TransactionScoped.class) [Error Occurred After Shutdown]: java.lang.NullPointerException: Cannot invoke "io.quarkus.arc.ArcContainer.beanManager()" because the return value of "io.quarkus.arc.Arc.container()" is null
at io.quarkus.narayana.jta.runtime.TransactionScopedNotifier.beforeDestroyed(TransactionScopedNotifier.java:32)
at io.quarkus.narayana.jta.runtime.NotifyingUserTransaction.rollback(NotifyingUserTransaction.java:44)
at jakarta.transaction.NarayanaJtaProducers_ProducerMethod_userTransaction_7zPXeUWVelZ-AzCmqVtVVw94OtA_ClientProxy.rollback(Unknown Source)
at io.quarkus.narayana.jta.RequestScopedTransaction.destroy(RequestScopedTransaction.java:89)
at io.quarkus.narayana.jta.RequestScopedTransaction_Bean.doDestroy(Unknown Source)
at io.quarkus.narayana.jta.RequestScopedTransaction_Bean.destroy(Unknown Source)
at io.quarkus.narayana.jta.RequestScopedTransaction_Bean.destroy(Unknown Source)
at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:78)
at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:26)
at io.quarkus.arc.impl.CurrentManagedContext$2.accept(CurrentManagedContext.java:187)
at io.quarkus.arc.impl.CurrentManagedContext$2.accept(CurrentManagedContext.java:184)
at io.quarkus.arc.generator.Default_jakarta_enterprise_context_RequestScoped_ContextInstances.removeEach(Unknown Source)
at io.quarkus.arc.impl.CurrentManagedContext.destroy(CurrentManagedContext.java:184)
at io.quarkus.scheduler.common.runtime.DefaultInvoker.lambda$invoke$0(DefaultInvoker.java:26)
at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
at java.base/java.util.concurrent.CompletableFuture.uniWhenCompleteStage(CompletableFuture.java:887)
at java.base/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:2357)
at java.base/java.util.concurrent.CompletableFuture$MinimalStage.whenComplete(CompletableFuture.java:2948)
at io.quarkus.scheduler.common.runtime.DefaultInvoker.invoke(DefaultInvoker.java:25)
at io.quarkus.scheduler.common.runtime.DelegateInvoker.invokeDelegate(DelegateInvoker.java:29)
at io.quarkus.scheduler.common.runtime.StatusEmitterInvoker.invoke(StatusEmitterInvoker.java:35)
at io.quarkus.scheduler.common.runtime.DelegateInvoker.invokeDelegate(DelegateInvoker.java:29)
at io.quarkus.scheduler.common.runtime.SkipConcurrentExecutionInvoker.invoke(SkipConcurrentExecutionInvoker.java:37)
at io.quarkus.scheduler.common.runtime.DelegateInvoker.invokeDelegate(DelegateInvoker.java:29)
at io.quarkus.scheduler.common.runtime.DelegateInvoker.invokeComplete(DelegateInvoker.java:36)
at io.quarkus.scheduler.common.runtime.OffloadingInvoker$2.call(OffloadingInvoker.java:54)
at io.quarkus.scheduler.common.runtime.OffloadingInvoker$2.call(OffloadingInvoker.java:51)
at io.vertx.core.impl.ContextImpl.lambda$executeBlocking$4(ContextImpl.java:192)
at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:270)
at io.vertx.core.impl.ContextImpl$1.execute(ContextImpl.java:221)
at io.vertx.core.impl.WorkerTask.run(WorkerTask.java:56)
at io.quarkus.vertx.core.runtime.VertxCoreRecorder$15.runWith(VertxCoreRecorder.java:650)
at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630)
at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589)
at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:11)
at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:11)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:1583)
2025-10-29 10:37:32,064 WARN [com.arj.ats.arjuna] (executor-thread-1) ARJUNA012077: Abort called on already aborted atomic action 0:ffff0aa542aa:dd41:6901e050:0
2025-10-29 10:37:32,067 ERROR [io.qua.arc.imp.UncaughtExceptions] (executor-thread-1) Error occurred while destroying instance of CLASS bean [types=[io.quarkus.narayana.jta.RequestScopedTransaction, java.lang.Object], qualifiers=[@Any, @Default], target=io.quarkus.narayana.jta.RequestScopedTransaction]: java.lang.NullPointerException: Cannot invoke "io.quarkus.arc.ArcContainer.beanManager()" because the return value of "io.quarkus.arc.Arc.container()" is null [Error Occurred After Shutdown]
2025-10-29 10:37:32,067 ERROR [io.qua.sch.com.run.StatusEmitterInvoker] (executor-thread-1) Error occurred while executing task for trigger io.quarkus.quartz.runtime.QuartzSchedulerImpl$QuartzTrigger@2e506e37 [Error Occurred After Shutdown]: java.util.concurrent.CompletionException: jakarta.enterprise.inject.CreationException: Error creating synthetic bean [QdxvhYUzh5cgfepxgL43K9-OFvU]: java.lang.NullPointerException: Cannot invoke "java.util.Map.get(Object)" because "io.quarkus.arc.runtime.ArcRecorder.syntheticBeanProviders" is null
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:332)
at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:347)
at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:874)
at java.base/java.util.concurrent.CompletableFuture.uniWhenCompleteStage(CompletableFuture.java:887)
at java.base/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:2357)
at java.base/java.util.concurrent.CompletableFuture$MinimalStage.whenComplete(CompletableFuture.java:2948)
at io.quarkus.scheduler.common.runtime.DefaultInvoker.invoke(DefaultInvoker.java:25)
at io.quarkus.scheduler.common.runtime.DelegateInvoker.invokeDelegate(DelegateInvoker.java:29)
at io.quarkus.scheduler.common.runtime.StatusEmitterInvoker.invoke(StatusEmitterInvoker.java:35)
at io.quarkus.scheduler.common.runtime.DelegateInvoker.invokeDelegate(DelegateInvoker.java:29)
at io.quarkus.scheduler.common.runtime.SkipConcurrentExecutionInvoker.invoke(SkipConcurrentExecutionInvoker.java:37)
at io.quarkus.scheduler.common.runtime.DelegateInvoker.invokeDelegate(DelegateInvoker.java:29)
at io.quarkus.scheduler.common.runtime.DelegateInvoker.invokeComplete(DelegateInvoker.java:36)
at io.quarkus.scheduler.common.runtime.OffloadingInvoker$2.call(OffloadingInvoker.java:54)
at io.quarkus.scheduler.common.runtime.OffloadingInvoker$2.call(OffloadingInvoker.java:51)
at io.vertx.core.impl.ContextImpl.lambda$executeBlocking$4(ContextImpl.java:192)
at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:270)
at io.vertx.core.impl.ContextImpl$1.execute(ContextImpl.java:221)
at io.vertx.core.impl.WorkerTask.run(WorkerTask.java:56)
at io.quarkus.vertx.core.runtime.VertxCoreRecorder$15.runWith(VertxCoreRecorder.java:650)
at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630)
at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589)
at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:11)
at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:11)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: jakarta.enterprise.inject.CreationException: Error creating synthetic bean [QdxvhYUzh5cgfepxgL43K9-OFvU]: java.lang.NullPointerException: Cannot invoke "java.util.Map.get(Object)" because "io.quarkus.arc.runtime.ArcRecorder.syntheticBeanProviders" is null
at org.hibernate.Session_QdxvhYUzh5cgfepxgL43K9-OFvU_Synthetic_Bean.doCreate(Unknown Source)
at org.hibernate.Session_QdxvhYUzh5cgfepxgL43K9-OFvU_Synthetic_Bean.create(Unknown Source)
at org.hibernate.Session_QdxvhYUzh5cgfepxgL43K9-OFvU_Synthetic_Bean.create(Unknown Source)
at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:119)
at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:38)
at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:35)
at io.quarkus.arc.generator.Default_jakarta_enterprise_context_ApplicationScoped_ContextInstances.c37(Unknown Source)
at io.quarkus.arc.generator.Default_jakarta_enterprise_context_ApplicationScoped_ContextInstances.computeIfAbsent(Unknown Source)
at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:35)
at io.quarkus.arc.impl.ClientProxies.getApplicationScopedDelegate(ClientProxies.java:23)
at org.hibernate.Session_QdxvhYUzh5cgfepxgL43K9-OFvU_Synthetic_ClientProxy.arc$delegate(Unknown Source)
at org.hibernate.Session_QdxvhYUzh5cgfepxgL43K9-OFvU_Synthetic_ClientProxy.createQuery(Unknown Source)
at XXX.service.GatewayBackupService.setProcessingStatus(GatewayBackupService.java:149)
at XXX.service.GatewayBackupService.checkForNewEntries(GatewayBackupService.java:116)
at XXX.service.GatewayBackupService_ClientProxy.checkForNewEntries(Unknown Source)
at XXX.service.GatewayBackupService_ScheduledInvoker_checkForNewEntries_ff76ea86a86aefa93eb77a1086c353ebbeba13c3.invokeBean(Unknown Source)
... 22 more
Caused by: java.lang.NullPointerException: Cannot invoke "java.util.Map.get(Object)" because "io.quarkus.arc.runtime.ArcRecorder.syntheticBeanProviders" is null
at org.hibernate.Session_QdxvhYUzh5cgfepxgL43K9-OFvU_Synthetic_Bean.createSynthetic(Unknown Source)
... 38 more
2025-10-29 10:37:32,070 INFO [io.quarkus] (main) XXX-service stopped in 7.429sMy question now: Is it possible to avoid the immediate transaction abortion and wait for the shutdown-wait-time? Also, the Kafka connection seems to be stopped, too. I need that connection during the processing. What is the purpose of the shutdown-wait-time if everything else is already shut down? |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 16 replies
-
|
/cc @machi1990 (quartz), @manovotn (quartz), @mkouba (quartz) |
Beta Was this translation helpful? Give feedback.
-
|
@bttger Why exactly do you use
AFAIK the graceful shutdown is currently only supported by the HTTP extension.
|
Beta Was this translation helpful? Give feedback.
I'm not a JTA expert but I think that you could actually delay the actual shutdown with
quarkus.shutdown.delay-enabled=trueand@ShutdownDelayInitiatedlogic. For example something like: