Hi Allard,
thanks for the response. There are some exceptions in logs:
- Aug 26 13:18:37.613 +03:00 [EventProcessor[CardRegistrationSagaProcessor]-0-22476][,][WARN] : Error occurred. Starting retry mode. org.springframework.transaction.TransactionSystemException: Could not roll back JPA transaction; nested exception is org.hibernate.TransactionException: Unable to rollback against JDBC Connection at org.springframework.orm.jpa.JpaTransactionManager.doRollback(JpaTransactionManager.java:564) at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:838) at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:812) at org.axonframework.spring.messaging.unitofwork.SpringTransactionManager.rollbackTransaction(SpringTransactionManager.java:91) at org.axonframework.spring.messaging.unitofwork.SpringTransactionManager$1.rollback(SpringTransactionManager.java:68) at org.axonframework.messaging.unitofwork.UnitOfWork.lambda$attachTransaction$1(UnitOfWork.java:274) at org.axonframework.messaging.unitofwork.MessageProcessingContext.notifyHandlers(MessageProcessingContext.java:71) at org.axonframework.messaging.unitofwork.BatchingUnitOfWork.lambda$notifyHandlers$2(BatchingUnitOfWork.java:155) at java.util.Iterator.forEachRemaining(Iterator.java:116) at org.axonframework.messaging.unitofwork.BatchingUnitOfWork.notifyHandlers(BatchingUnitOfWork.java:155) at org.axonframework.messaging.unitofwork.AbstractUnitOfWork.changePhase(AbstractUnitOfWork.java:222) at org.axonframework.messaging.unitofwork.AbstractUnitOfWork.rollback(AbstractUnitOfWork.java:128) at org.axonframework.messaging.unitofwork.BatchingUnitOfWork.executeWithResult(BatchingUnitOfWork.java:96) at org.axonframework.eventhandling.AbstractEventProcessor.processInUnitOfWork(AbstractEventProcessor.java:159) at org.axonframework.eventhandling.TrackingEventProcessor.processBatch(TrackingEventProcessor.java:438) at org.axonframework.eventhandling.TrackingEventProcessor.processingLoop(TrackingEventProcessor.java:301) at org.axonframework.eventhandling.TrackingEventProcessor$TrackingSegmentWorker.run(TrackingEventProcessor.java:1161) at org.axonframework.eventhandling.TrackingEventProcessor$WorkerLauncher.run(TrackingEventProcessor.java:1276) at org.axonframework.eventhandling.TrackingEventProcessor$TrackingSegmentWorker.run(TrackingEventProcessor.java:1171) at org.axonframework.eventhandling.TrackingEventProcessor$WorkerLauncher.run(TrackingEventProcessor.java:1276) at java.lang.Thread.run(Thread.java:748) Caused by: org.hibernate.TransactionException: Unable to rollback against JDBC Connection at org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.rollback(AbstractLogicalConnectionImplementor.java:122) at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.rollback(JdbcResourceLocalTransactionCoordinatorImpl.java:294) at org.hibernate.engine.transaction.internal.TransactionImpl.rollback(TransactionImpl.java:145) at org.springframework.orm.jpa.JpaTransactionManager.doRollback(JpaTransactionManager.java:560) … 20 common frames omitted Caused by: java.sql.SQLException: The connection is closed: The connection is closed at oracle.ucp.util.UCPErrorHandler.newSQLException(UCPErrorHandler.java:441) at oracle.ucp.util.UCPErrorHandler.newSQLException(UCPErrorHandler.java:425) at oracle.ucp.jdbc.proxy.JDBCConnectionProxyFactory.invoke(JDBCConnectionProxyFactory.java:308) at oracle.ucp.jdbc.proxy.ConnectionProxyFactory.invoke(ConnectionProxyFactory.java:50) at com.sun.proxy.$Proxy204.rollback(Unknown Source) at org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.rollback(AbstractLogicalConnectionImplementor.java:116) … 23 common frames omitted
- Aug 26 13:18:37.613 +03:00 [EventProcessor[CardRegistrationSagaProcessor]-0-22476][,][WARN] : Releasing claim on token and preparing for retry in 1s
I’ve collected thread dump and it shows that saga event processor thread holds several locks, which blocks scheduler threads to acquire lock on saga.
{
“threadName”: “EventProcessor[CardRegistrationSagaProcessor]-0”,
“threadId”: 78,
“blockedTime”: -1,
“blockedCount”: 24,
“waitedTime”: -1,
“waitedCount”: 1579247,
“lockOwnerId”: -1,
“inNative”: false,
“suspended”: false,
“threadState”: “TIMED_WAITING”,
“stackTrace”: [
{
“methodName”: “sleep”,
“fileName”: “Thread.java”,
“lineNumber”: -2,
“className”: “java.lang.Thread”,
“nativeMethod”: true
},
{
“methodName”: “doSleepFor”,
“fileName”: “TrackingEventProcessor.java”,
“lineNumber”: 764,
“className”: “org.axonframework.eventhandling.TrackingEventProcessor”,
“nativeMethod”: false
},
{
“methodName”: “run”,
“fileName”: “TrackingEventProcessor.java”,
“lineNumber”: 1279,
“className”: “org.axonframework.eventhandling.TrackingEventProcessor$WorkerLauncher”,
“nativeMethod”: false
},
{
“methodName”: “run”,
“fileName”: “TrackingEventProcessor.java”,
“lineNumber”: 1171,
“className”: “org.axonframework.eventhandling.TrackingEventProcessor$TrackingSegmentWorker”,
“nativeMethod”: false
},
{
“methodName”: “run”,
“fileName”: “TrackingEventProcessor.java”,
“lineNumber”: 1276,
“className”: “org.axonframework.eventhandling.TrackingEventProcessor$WorkerLauncher”,
“nativeMethod”: false
},
{
“methodName”: “run”,
“fileName”: “Thread.java”,
“lineNumber”: 748,
“className”: “java.lang.Thread”,
“nativeMethod”: false
}
],
“lockedMonitors”: [],
“lockedSynchronizers”: [
{
“className”: “java.util.concurrent.locks.ReentrantLock$NonfairSync”,
“identityHashCode”: 1291360426
},
{
“className”: “java.util.concurrent.locks.ReentrantLock$NonfairSync”,
“identityHashCode”: 1449345998
},
{
“className”: “java.util.concurrent.locks.ReentrantLock$NonfairSync”,
“identityHashCode”: 1475016286
},
{
“className”: “java.util.concurrent.locks.ReentrantLock$NonfairSync”,
“identityHashCode”: 336590891
},
{
“className”: “java.util.concurrent.locks.ReentrantLock$NonfairSync”,
“identityHashCode”: 954289854
},
{
“className”: “java.util.concurrent.locks.ReentrantLock$NonfairSync”,
“identityHashCode”: 1951401823
},
{
“className”: “java.util.concurrent.locks.ReentrantLock$NonfairSync”,
“identityHashCode”: 1946699661
},
{
“className”: “java.util.concurrent.locks.ReentrantLock$NonfairSync”,
“identityHashCode”: 523057031
}
]
},
{
“threadName”: “EventScheduler_Worker-6”,
“threadId”: 36,
“blockedTime”: -1,
“blockedCount”: 1786,
“waitedTime”: -1,
“waitedCount”: 317635,
“lockName”: “java.util.concurrent.locks.ReentrantLock$NonfairSync@566343ce”,
“lockOwnerId”: 78,
“lockOwnerName”: “EventProcessor[CardRegistrationSagaProcessor]-0”,
“inNative”: false,
“suspended”: false,
“threadState”: “TIMED_WAITING”,
“stackTrace”: [
{
“methodName”: “park”,
“fileName”: “Unsafe.java”,
“lineNumber”: -2,
“className”: “sun.misc.Unsafe”,
“nativeMethod”: true
},
{
“methodName”: “parkNanos”,
“fileName”: “LockSupport.java”,
“lineNumber”: 215,
“className”: “java.util.concurrent.locks.LockSupport”,
“nativeMethod”: false
},
{
“methodName”: “doAcquireNanos”,
“fileName”: “AbstractQueuedSynchronizer.java”,
“lineNumber”: 934,
“className”: “java.util.concurrent.locks.AbstractQueuedSynchronizer”,
“nativeMethod”: false
},
{
“methodName”: “tryAcquireNanos”,
“fileName”: “AbstractQueuedSynchronizer.java”,
“lineNumber”: 1247,
“className”: “java.util.concurrent.locks.AbstractQueuedSynchronizer”,
“nativeMethod”: false
},
{
“methodName”: “tryLock”,
“fileName”: “ReentrantLock.java”,
“lineNumber”: 442,
“className”: “java.util.concurrent.locks.ReentrantLock”,
“nativeMethod”: false
},
{
“methodName”: “lock”,
“fileName”: “PessimisticLockFactory.java”,
“lineNumber”: 272,
“className”: “org.axonframework.common.lock.PessimisticLockFactory$DisposableLock”,
“nativeMethod”: false
},
{
“methodName”: “obtainLock”,
“fileName”: “PessimisticLockFactory.java”,
“lineNumber”: 122,
“className”: “org.axonframework.common.lock.PessimisticLockFactory”,
“nativeMethod”: false
},
{
“methodName”: “lockSagaAccess”,
“fileName”: “LockingSagaRepository.java”,
“lineNumber”: 81,
“className”: “org.axonframework.modelling.saga.repository.LockingSagaRepository”,
“nativeMethod”: false
},
{
“methodName”: “load”,
“fileName”: “LockingSagaRepository.java”,
“lineNumber”: 63,
“className”: “org.axonframework.modelling.saga.repository.LockingSagaRepository”,
“nativeMethod”: false
},
{
“methodName”: “send”,
“fileName”: “AbstractSagaManager.java”,
“lineNumber”: 211,
“className”: “org.axonframework.modelling.saga.AbstractSagaManager”,
“nativeMethod”: false
},
{
“methodName”: “lambda$executeScheduledDeadline$2”,
“fileName”: “DeadlineJob.java”,
“lineNumber”: 161,
“className”: “org.axonframework.deadline.quartz.DeadlineJob”,
“nativeMethod”: false
},
{
“methodName”: “accept”,
“lineNumber”: -1,
“className”: “org.axonframework.deadline.quartz.DeadlineJob$$Lambda$2089/1733249645”,
“nativeMethod”: false
},
{
“methodName”: “accept”,
“fileName”: “ForEachOps.java”,
“lineNumber”: 184,
“className”: “java.util.stream.ForEachOps$ForEachOp$OfRef”,
“nativeMethod”: false
},
{
“methodName”: “accept”,
“fileName”: “ReferencePipeline.java”,
“lineNumber”: 175,
“className”: “java.util.stream.ReferencePipeline$2$1”,
“nativeMethod”: false
},
{
“methodName”: “forEachRemaining”,
“fileName”: “ArrayList.java”,
“lineNumber”: 1374,
“className”: “java.util.ArrayList$ArrayListSpliterator”,
“nativeMethod”: false
},
{
“methodName”: “copyInto”,
“fileName”: “AbstractPipeline.java”,
“lineNumber”: 481,
“className”: “java.util.stream.AbstractPipeline”,
“nativeMethod”: false
},
{
“methodName”: “wrapAndCopyInto”,
“fileName”: “AbstractPipeline.java”,
“lineNumber”: 471,
“className”: “java.util.stream.AbstractPipeline”,
“nativeMethod”: false
},
{
“methodName”: “evaluateSequential”,
“fileName”: “ForEachOps.java”,
“lineNumber”: 151,
“className”: “java.util.stream.ForEachOps$ForEachOp”,
“nativeMethod”: false
},
{
“methodName”: “evaluateSequential”,
“fileName”: “ForEachOps.java”,
“lineNumber”: 174,
“className”: “java.util.stream.ForEachOps$ForEachOp$OfRef”,
“nativeMethod”: false
},
{
“methodName”: “evaluate”,
“fileName”: “AbstractPipeline.java”,
“lineNumber”: 234,
“className”: “java.util.stream.AbstractPipeline”,
“nativeMethod”: false
},
{
“methodName”: “forEach”,
“fileName”: “ReferencePipeline.java”,
“lineNumber”: 418,
“className”: “java.util.stream.ReferencePipeline”,
“nativeMethod”: false
},
{
“methodName”: “executeScheduledDeadline”,
“fileName”: “DeadlineJob.java”,
“lineNumber”: 159,
“className”: “org.axonframework.deadline.quartz.DeadlineJob”,
“nativeMethod”: false
},
{
“methodName”: “lambda$execute$0”,
“fileName”: “DeadlineJob.java”,
“lineNumber”: 128,
“className”: “org.axonframework.deadline.quartz.DeadlineJob”,
“nativeMethod”: false
},
{
“methodName”: “handle”,
“lineNumber”: -1,
“className”: “org.axonframework.deadline.quartz.DeadlineJob$$Lambda$2081/1117718094”,
“nativeMethod”: false
},
{
“methodName”: “proceed”,
“fileName”: “DefaultInterceptorChain.java”,
“lineNumber”: 57,
“className”: “org.axonframework.messaging.DefaultInterceptorChain”,
“nativeMethod”: false
},
{
“methodName”: “call”,
“lineNumber”: -1,
“className”: “org.axonframework.deadline.quartz.DeadlineJob$$Lambda$2082/1184930501”,
“nativeMethod”: false
},
{
“methodName”: “executeWithResult”,
“fileName”: “DefaultUnitOfWork.java”,
“lineNumber”: 74,
“className”: “org.axonframework.messaging.unitofwork.DefaultUnitOfWork”,
“nativeMethod”: false
},
{
“methodName”: “executeWithResult”,
“fileName”: “UnitOfWork.java”,
“lineNumber”: 328,
“className”: “org.axonframework.messaging.unitofwork.UnitOfWork”,
“nativeMethod”: false
},
{
“methodName”: “execute”,
“fileName”: “DeadlineJob.java”,
“lineNumber”: 134,
“className”: “org.axonframework.deadline.quartz.DeadlineJob”,
“nativeMethod”: false
},
{
“methodName”: “run”,
“fileName”: “JobRunShell.java”,
“lineNumber”: 202,
“className”: “org.quartz.core.JobRunShell”,
“nativeMethod”: false
},
{
“methodName”: “run”,
“fileName”: “SimpleThreadPool.java”,
“lineNumber”: 573,
“className”: “org.quartz.simpl.SimpleThreadPool$WorkerThread”,
“nativeMethod”: false
}
],
“lockedMonitors”: [
{
“className”: “java.lang.Object”,
“identityHashCode”: 980210039,
“lockedStackDepth”: 30,
“lockedStackFrame”: {
“methodName”: “run”,
“fileName”: “SimpleThreadPool.java”,
“lineNumber”: 573,
“className”: “org.quartz.simpl.SimpleThreadPool$WorkerThread”,
“nativeMethod”: false
}
}
],
“lockedSynchronizers”: [],
“lockInfo”: {
“className”: “java.util.concurrent.locks.ReentrantLock$NonfairSync”,
“identityHashCode”: 1449345998
}
}
Kind regards,
Alexey.
четверг, 27 августа 2020 г. в 17:57:15 UTC+3, Allard Buijze: