[
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)