[ 
https://issues.apache.org/jira/browse/IGNITE-22980?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17873171#comment-17873171
 ] 

Vladislav Pyatkov commented on IGNITE-22980:
--------------------------------------------

This issue was reproduced in 
ItTransactionRecoveryTest#testRecoveryIsTriggeredOnce. The reason is that we 
can acquire a lock in the same thread where we try to fail the waiter.
{noformat}
[2024-08-12T22:18:20,774][WARN ][main][HeapLockManager] Dumping stack
 java.lang.Exception: Lock is taken S
        at 
org.apache.ignite.internal.util.IgniteUtils.dumpStack(IgniteUtils.java:666) 
~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.HeapLockManager$WaiterImpl.lock(HeapLockManager.java:908)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.HeapLockManager$LockState.isWaiterReadyToNotify(HeapLockManager.java:480)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.HeapLockManager$LockState.unlockCompatibleWaiters(HeapLockManager.java:596)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.HeapLockManager$LockState.release(HeapLockManager.java:577)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.HeapLockManager$LockState.tryRelease(HeapLockManager.java:519)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.HeapLockManager.releaseAll(HeapLockManager.java:220)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.TxCleanupRequestHandler.releaseTxLocks(TxCleanupRequestHandler.java:173)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.TxCleanupRequestHandler.lambda$processTxCleanup$2(TxCleanupRequestHandler.java:144)
 ~[main/:?]
        at 
java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859)
 ~[?:?]
        at 
java.base/java.util.concurrent.CompletableFuture.uniWhenCompleteStage(CompletableFuture.java:883)
 ~[?:?]
        at 
java.base/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:2251)
 ~[?:?]
        at 
org.apache.ignite.internal.tx.impl.TxCleanupRequestHandler.processTxCleanup(TxCleanupRequestHandler.java:143)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.TxCleanupRequestHandler.lambda$start$0(TxCleanupRequestHandler.java:108)
 ~[main/:?]
        at 
org.apache.ignite.internal.network.TrackableNetworkMessageHandler.onReceived(TrackableNetworkMessageHandler.java:52)
 ~[main/:?]
        at 
org.apache.ignite.internal.network.DefaultMessagingService.sendToSelf(DefaultMessagingService.java:370)
 ~[main/:?]
        at 
org.apache.ignite.internal.network.DefaultMessagingService.invoke0(DefaultMessagingService.java:298)
 ~[main/:?]
        at 
org.apache.ignite.internal.network.DefaultMessagingService.invoke(DefaultMessagingService.java:226)
 ~[main/:?]
        at 
org.apache.ignite.internal.network.wrapper.JumpToExecutorByConsistentIdAfterSend.invoke(JumpToExecutorByConsistentIdAfterSend.java:97)
 ~[main/:?]
        at 
org.apache.ignite.internal.network.MessagingService.invoke(MessagingService.java:198)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.TxMessageSender.cleanup(TxMessageSender.java:131)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.TxCleanupRequestSender.sendCleanupMessageWithRetries(TxCleanupRequestSender.java:240)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.TxCleanupRequestSender.cleanupPartitions(TxCleanupRequestSender.java:226)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.TxCleanupRequestSender.cleanup(TxCleanupRequestSender.java:165)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.TxManagerImpl.cleanup(TxManagerImpl.java:833)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.lambda$finishAndCleanup$65(PartitionReplicaListener.java:1738)
 ~[main/:?]
        at 
java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1106)
 ~[?:?]
        at 
java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2235)
 ~[?:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.finishAndCleanup(PartitionReplicaListener.java:1737)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processTxFinishAction(PartitionReplicaListener.java:1657)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processOperationRequest(PartitionReplicaListener.java:795)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processOperationRequestWithTxRwCounter(PartitionReplicaListener.java:4045)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.lambda$processRequest$6(PartitionReplicaListener.java:522)
 ~[main/:?]
        at 
java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1106)
 ~[?:?]
        at 
java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2235)
 ~[?:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processRequest(PartitionReplicaListener.java:521)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.lambda$invoke$1(PartitionReplicaListener.java:465)
 ~[main/:?]
        at 
java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1106)
 ~[?:?]
        at 
java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2235)
 ~[?:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.invoke(PartitionReplicaListener.java:465)
 ~[main/:?]
        at 
org.apache.ignite.internal.replicator.ReplicaImpl.processRequest(ReplicaImpl.java:153)
 ~[main/:?]
        at 
org.apache.ignite.internal.replicator.ReplicaManager.handleReplicaRequest(ReplicaManager.java:429)
 ~[main/:?]
        at 
org.apache.ignite.internal.replicator.ReplicaManager.onReplicaMessageReceived(ReplicaManager.java:360)
 ~[main/:?]
        at 
org.apache.ignite.internal.network.DefaultMessagingService.sendToSelf(DefaultMessagingService.java:370)
 ~[main/:?]
        at 
org.apache.ignite.internal.network.DefaultMessagingService.invoke0(DefaultMessagingService.java:298)
 ~[main/:?]
        at 
org.apache.ignite.internal.network.DefaultMessagingService.invoke(DefaultMessagingService.java:226)
 ~[main/:?]
        at 
org.apache.ignite.internal.network.wrapper.JumpToExecutorByConsistentIdAfterSend.invoke(JumpToExecutorByConsistentIdAfterSend.java:97)
 ~[main/:?]
        at 
org.apache.ignite.internal.network.MessagingService.invoke(MessagingService.java:198)
 ~[main/:?]
        at 
org.apache.ignite.internal.replicator.ReplicaService.sendToReplica(ReplicaService.java:137)
 ~[main/:?]
        at 
org.apache.ignite.internal.replicator.ReplicaService.invoke(ReplicaService.java:286)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.TxMessageSender.finish(TxMessageSender.java:169)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.TxManagerImpl.makeFinishRequest(TxManagerImpl.java:703)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.TxManagerImpl.lambda$durableFinish$13(TxManagerImpl.java:628)
 ~[main/:?]
        at 
java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1106)
 ~[?:?]
        at 
java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2235)
 ~[?:?]
        at 
org.apache.ignite.internal.tx.impl.TxManagerImpl.lambda$durableFinish$17(TxManagerImpl.java:627)
 ~[main/:?]
        at 
org.apache.ignite.internal.util.IgniteUtils.inBusyLockAsync(IgniteUtils.java:893)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.TxManagerImpl.durableFinish(TxManagerImpl.java:626)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.TxManagerImpl.lambda$prepareFinish$11(TxManagerImpl.java:600)
 ~[main/:?]
        at 
java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:930)
 ~[?:?]
        at 
java.base/java.util.concurrent.CompletableFuture.uniHandleStage(CompletableFuture.java:946)
 ~[?:?]
        at 
java.base/java.util.concurrent.CompletableFuture.handle(CompletableFuture.java:2266)
 ~[?:?]
        at 
org.apache.ignite.internal.tx.impl.TxManagerImpl.prepareFinish(TxManagerImpl.java:590)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.TxManagerImpl.lambda$finish$7(TxManagerImpl.java:549)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.TransactionInflights$ReadWriteTxContext.lambda$performFinish$1(TransactionInflights.java:246)
 ~[main/:?]
        at 
java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859)
 ~[?:?]
        at 
java.base/java.util.concurrent.CompletableFuture.uniWhenCompleteStage(CompletableFuture.java:883)
 ~[?:?]
        at 
java.base/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:2251)
 ~[?:?]
        at 
org.apache.ignite.internal.tx.impl.TransactionInflights$ReadWriteTxContext.performFinish(TransactionInflights.java:246)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.TxManagerImpl.finish(TxManagerImpl.java:548) 
~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.triggerTxRecovery(PartitionReplicaListener.java:581)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processTxRecoveryMessage(PartitionReplicaListener.java:554)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processRequest(PartitionReplicaListener.java:505)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.lambda$invoke$1(PartitionReplicaListener.java:465)
 ~[main/:?]
        at 
java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1106)
 ~[?:?]
        at 
java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2235)
 ~[?:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.invoke(PartitionReplicaListener.java:465)
 ~[main/:?]
        at 
org.apache.ignite.internal.replicator.ReplicaImpl.processRequest(ReplicaImpl.java:153)
 ~[main/:?]
        at 
org.apache.ignite.internal.replicator.ReplicaManager.handleReplicaRequest(ReplicaManager.java:429)
 ~[main/:?]
        at 
org.apache.ignite.internal.replicator.ReplicaManager.onReplicaMessageReceived(ReplicaManager.java:360)
 ~[main/:?]
        at 
org.apache.ignite.internal.network.DefaultMessagingService.sendToSelf(DefaultMessagingService.java:370)
 ~[main/:?]
        at 
org.apache.ignite.internal.network.DefaultMessagingService.invoke0(DefaultMessagingService.java:298)
 ~[main/:?]
        at 
org.apache.ignite.internal.network.DefaultMessagingService.invoke(DefaultMessagingService.java:226)
 ~[main/:?]
        at 
org.apache.ignite.internal.network.wrapper.JumpToExecutorByConsistentIdAfterSend.invoke(JumpToExecutorByConsistentIdAfterSend.java:97)
 ~[main/:?]
        at 
org.apache.ignite.internal.network.MessagingService.invoke(MessagingService.java:198)
 ~[main/:?]
        at 
org.apache.ignite.internal.replicator.ReplicaService.sendToReplica(ReplicaService.java:137)
 ~[main/:?]
        at 
org.apache.ignite.internal.replicator.ReplicaService.invoke(ReplicaService.java:272)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.OrphanDetector.lambda$sendTxRecoveryMessage$1(OrphanDetector.java:207)
 ~[main/:?]
        at 
java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1106)
 ~[?:?]
        at 
java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2235)
 ~[?:?]
        at 
org.apache.ignite.internal.tx.impl.OrphanDetector.sendTxRecoveryMessage(OrphanDetector.java:194)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.OrphanDetector.checkTxOrphanedInternal(OrphanDetector.java:178)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.OrphanDetector.lockConflictListener(OrphanDetector.java:147)
 ~[main/:?]
        at 
org.apache.ignite.internal.event.AbstractEventProducer.fireEvent(AbstractEventProducer.java:88)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.HeapLockManager.access$000(HeapLockManager.java:75)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.HeapLockManager$LockState.conflictFound(HeapLockManager.java:702)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.HeapLockManager$LockState.isWaiterReadyToNotify(HeapLockManager.java:466)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.HeapLockManager$LockState.tryAcquire(HeapLockManager.java:391)
 ~[main/:?]
        at 
org.apache.ignite.internal.tx.impl.HeapLockManager.acquire(HeapLockManager.java:176)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.HashIndexLocker.locksForLookupByKey(HashIndexLocker.java:63)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.resolveRowByPk(PartitionReplicaListener.java:1985)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processSingleEntryAction(PartitionReplicaListener.java:3098)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.lambda$processOperationRequest$10(PartitionReplicaListener.java:727)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.appendTxCommand(PartitionReplicaListener.java:2088)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processOperationRequest(PartitionReplicaListener.java:727)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processOperationRequestWithTxRwCounter(PartitionReplicaListener.java:4045)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.lambda$processRequest$6(PartitionReplicaListener.java:522)
 ~[main/:?]
        at 
java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1106)
 ~[?:?]
        at 
java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2235)
 ~[?:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processRequest(PartitionReplicaListener.java:521)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.lambda$invoke$1(PartitionReplicaListener.java:465)
 ~[main/:?]
        at 
java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1106)
 ~[?:?]
        at 
java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2235)
 ~[?:?]
        at 
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.invoke(PartitionReplicaListener.java:465)
 ~[main/:?]
        at 
org.apache.ignite.internal.replicator.ReplicaImpl.processRequest(ReplicaImpl.java:153)
 ~[main/:?]
        at 
org.apache.ignite.internal.replicator.ReplicaManager.handleReplicaRequest(ReplicaManager.java:429)
 ~[main/:?]
        at 
org.apache.ignite.internal.replicator.ReplicaManager.onReplicaMessageReceived(ReplicaManager.java:360)
 ~[main/:?]
        at 
org.apache.ignite.internal.network.DefaultMessagingService.sendToSelf(DefaultMessagingService.java:370)
 ~[main/:?]
        at 
org.apache.ignite.internal.network.DefaultMessagingService.invoke0(DefaultMessagingService.java:298)
 ~[main/:?]
        at 
org.apache.ignite.internal.network.DefaultMessagingService.invoke(DefaultMessagingService.java:226)
 ~[main/:?]
        at 
org.apache.ignite.internal.network.wrapper.JumpToExecutorByConsistentIdAfterSend.invoke(JumpToExecutorByConsistentIdAfterSend.java:97)
 ~[main/:?]
        at 
org.apache.ignite.internal.network.MessagingService.invoke(MessagingService.java:198)
 ~[main/:?]
        at 
org.apache.ignite.internal.replicator.ReplicaService.sendToReplica(ReplicaService.java:137)
 ~[main/:?]
        at 
org.apache.ignite.internal.replicator.ReplicaService.invoke(ReplicaService.java:272)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.storage.InternalTableImpl.trackingInvoke(InternalTableImpl.java:649)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.storage.InternalTableImpl.lambda$enlistAndInvoke$7(InternalTableImpl.java:601)
 ~[main/:?]
        at 
java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1106)
 ~[?:?]
        at 
java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2235)
 ~[?:?]
        at 
org.apache.ignite.internal.table.distributed.storage.InternalTableImpl.enlistAndInvoke(InternalTableImpl.java:600)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.storage.InternalTableImpl.enlistInTx(InternalTableImpl.java:359)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.storage.InternalTableImpl.enlistInTx(InternalTableImpl.java:303)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.distributed.storage.InternalTableImpl.upsert(InternalTableImpl.java:1072)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.RecordBinaryViewImpl.lambda$upsertAsync$7(RecordBinaryViewImpl.java:190)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.AbstractTableView.lambda$withSchemaSync$1(AbstractTableView.java:142)
 ~[main/:?]
        at 
java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1106)
 ~[?:?]
        at 
java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2235)
 ~[?:?]
        at 
org.apache.ignite.internal.table.AbstractTableView.withSchemaSync(AbstractTableView.java:142)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.AbstractTableView.withSchemaSync(AbstractTableView.java:133)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.AbstractTableView.doOperation(AbstractTableView.java:111)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.RecordBinaryViewImpl.upsertAsync(RecordBinaryViewImpl.java:187)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.RecordBinaryViewImpl.upsert(RecordBinaryViewImpl.java:179)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.RecordBinaryViewImpl.upsert(RecordBinaryViewImpl.java:62)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.PublicApiThreadingRecordView.lambda$upsert$8(PublicApiThreadingRecordView.java:96)
 ~[main/:?]
        at 
org.apache.ignite.internal.thread.PublicApiThreading.lambda$execUserSyncOperation$1(PublicApiThreading.java:116)
 ~[main/:?]
        at 
org.apache.ignite.internal.thread.PublicApiThreading.executeWithRole(PublicApiThreading.java:144)
 ~[main/:?]
        at 
org.apache.ignite.internal.thread.PublicApiThreading.execUserSyncOperation(PublicApiThreading.java:102)
 ~[main/:?]
        at 
org.apache.ignite.internal.thread.PublicApiThreading.execUserSyncOperation(PublicApiThreading.java:115)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.PublicApiThreadingViewBase.executeSyncOp(PublicApiThreadingViewBase.java:111)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.PublicApiThreadingRecordView.upsert(PublicApiThreadingRecordView.java:96)
 ~[main/:?]
        at 
org.apache.ignite.internal.table.ItTransactionRecoveryTest.runConflictingTransaction(ItTransactionRecoveryTest.java:1062)
 ~[integrationTest/:?]
        at 
org.apache.ignite.internal.table.ItTransactionRecoveryTest.testRecoveryIsTriggeredOnce(ItTransactionRecoveryTest.java:585)
 ~[integrationTest/:?]
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[?:?]
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 ~[?:?]
        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:?]
        at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at 
org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
 ~[junit-platform-commons-1.10.3.jar:1.10.3]
        at 
org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
 ~[junit-jupiter-engine-5.10.3.jar:5.10.3]
        at 
org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
 ~[junit-jupiter-engine-5.10.3.jar:5.10.3]
        at 
org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
 ~[junit-jupiter-engine-5.10.3.jar:5.10.3]
        at 
org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
 ~[junit-jupiter-engine-5.10.3.jar:5.10.3]
        at 
org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
 ~[junit-jupiter-engine-5.10.3.jar:5.10.3]
        at 
org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
 ~[junit-jupiter-engine-5.10.3.jar:5.10.3]
        at 
org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
 ~[junit-jupiter-engine-5.10.3.jar:5.10.3]
        at 
org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
 ~[junit-jupiter-engine-5.10.3.jar:5.10.3]
        at 
org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
 ~[junit-jupiter-engine-5.10.3.jar:5.10.3]
        at 
org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
 ~[junit-jupiter-engine-5.10.3.jar:5.10.3]
        at 
org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
 ~[junit-jupiter-engine-5.10.3.jar:5.10.3]
        at 
org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
 ~[junit-jupiter-engine-5.10.3.jar:5.10.3]
        at 
org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
 ~[junit-jupiter-engine-5.10.3.jar:5.10.3]
        at 
org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
 ~[junit-jupiter-engine-5.10.3.jar:5.10.3]
        at 
org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
 ~[junit-jupiter-engine-5.10.3.jar:5.10.3]
        at 
org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
 ~[junit-jupiter-engine-5.10.3.jar:5.10.3]
        at 
org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
 ~[junit-jupiter-engine-5.10.3.jar:5.10.3]
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) 
~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1540) ~[?:?]
        at 
org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) 
~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1540) ~[?:?]
        at 
org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) 
~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
 ~[junit-platform-engine-1.10.3.jar:1.10.3]
        at 
org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:198)
 ~[junit-platform-launcher-1.10.3.jar:1.10.3]
        at 
org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:169)
 ~[junit-platform-launcher-1.10.3.jar:1.10.3]
        at 
org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:93)
 ~[junit-platform-launcher-1.10.3.jar:1.10.3]
        at 
org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:58)
 ~[junit-platform-launcher-1.10.3.jar:1.10.3]
        at 
org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:141)
 [junit-platform-launcher-1.10.3.jar:1.10.3]
        at 
org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:57)
 [junit-platform-launcher-1.10.3.jar:1.10.3]
        at 
org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:103)
 [junit-platform-launcher-1.10.3.jar:1.10.3]
        at 
org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:85)
 [junit-platform-launcher-1.10.3.jar:1.10.3]
        at 
org.junit.platform.launcher.core.DelegatingLauncher.execute(DelegatingLauncher.java:47)
 [junit-platform-launcher-1.10.3.jar:1.10.3]
        at 
org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:63)
 [junit-platform-launcher-1.10.3.jar:1.10.3]
        at 
com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57)
 [junit5-rt.jar:?]
        at 
com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) 
[junit-rt.jar:?]
        at 
com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) 
[idea_rt.jar:?]
        at 
com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
 [junit-rt.jar:?]
        at 
com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
 [junit-rt.jar:?]
        at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55) 
[junit-rt.jar:?]
{noformat}

> Lock manager may fail and lock waiter simultaneously
> ----------------------------------------------------
>
>                 Key: IGNITE-22980
>                 URL: https://issues.apache.org/jira/browse/IGNITE-22980
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Vladislav Pyatkov
>            Priority: Major
>              Labels: ignite-3
>
> h3. Motivation
> The behavior was hardly predicted or planned. But currently, we can acquery a 
> lock:
> {code:java}
>         private void lock() {
>             IgniteUtils.dumpStack(Loggers.forClass(HeapLockManager.class), 
> "Lock is taken " + intendedLockMode);
>             lockMode = intendedLockMode;
>             intendedLockMode = null;
>             intendedLocks.clear();
>         }
> {code}
> and made the waiter fail:
> {code:java}
>         private void fail(LockException e) {
>             ex = e;
>         }
> {code}
> without limitation (assertion checking or explicitly prohibition).
> h3. Definition of done
> Only one method can be applied to a lock attempt ether lock() or fail(), but 
> not both.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to