[ https://issues.apache.org/jira/browse/IGNITE-25260?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Vyacheslav Koptilin updated IGNITE-25260: ----------------------------------------- Description: {code:java} java.lang.AssertionError: The earliest catalog version does not match. Expected: is <9> but: was <8> java.lang.AssertionError: The earliest catalog version does not match. Expected: is <9> but: was <8> at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20) at org.apache.ignite.internal.catalog.compaction.ItCatalogCompactionTest.lambda$expectEarliestCatalogVersion$11(ItCatalogCompactionTest.java:279) at org.awaitility.core.AssertionCondition.lambda$new$0(AssertionCondition.java:53) at org.awaitility.core.ConditionAwaiter$ConditionPoller.call(ConditionAwaiter.java:248) at org.awaitility.core.ConditionAwaiter$ConditionPoller.call(ConditionAwaiter.java:235) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at org.awaitility.core.SameThreadExecutorService.execute(SameThreadExecutorService.java:79) at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) at org.awaitility.core.ConditionAwaiter.await(ConditionAwaiter.java:101) at org.awaitility.core.AssertionCondition.await(AssertionCondition.java:119) at org.awaitility.core.AssertionCondition.await(AssertionCondition.java:31) at org.awaitility.core.ConditionFactory.until(ConditionFactory.java:1160) at org.awaitility.core.ConditionFactory.untilAsserted(ConditionFactory.java:790) at org.apache.ignite.internal.catalog.compaction.ItCatalogCompactionTest.expectEarliestCatalogVersion(ItCatalogCompactionTest.java:274) at org.apache.ignite.internal.catalog.compaction.ItCatalogCompactionTest.testCompactionRun(ItCatalogCompactionTest.java:235){code} The real issue is the following error: {noformat} [2025-05-07T10:24:10,178][ERROR][%icct_n_3346%tableManager-io-3][FailureManager] Critical system error detected. Will be handled accordingly to configured handler [hnd=NoOpFailureHandler [super=AbstractFailureHandler [ignoredFailureTypes=UnmodifiableSet [SYSTEM_WORKER_BLOCKED, SYSTEM_CRITICAL_OPERATION_TIMEOUT]]], failureCtx=CRITICAL_ERROR] 10:24:10 org.apache.ignite.internal.failure.StackTraceCapturingException: Replica start failed [groupId=0_part_2] 10:24:10 at org.apache.ignite.internal.failure.FailureManager.process(FailureManager.java:161) ~[ignite-failure-handler-3.1.0-SNAPSHOT.jar:?] 10:24:10 at org.apache.ignite.internal.failure.FailureManager.process(FailureManager.java:138) ~[ignite-failure-handler-3.1.0-SNAPSHOT.jar:?] 10:24:10 at org.apache.ignite.internal.replicator.ReplicaStateManager.lambda$startReplica$4(ReplicaStateManager.java:243) ~[ignite-replicator-3.1.0-SNAPSHOT.jar:?] 10:24:10 at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) [?:?] 10:24:10 at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) [?:?] 10:24:10 at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) [?:?] 10:24:10 at java.base/java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) [?:?] 10:24:10 at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:914) [?:?] 10:24:10 at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) [?:?] 10:24:10 at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?] 10:24:10 at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?] 10:24:10 at java.base/java.lang.Thread.run(Thread.java:833) [?:?] 10:24:10 Caused by: java.util.concurrent.CompletionException: org.apache.ignite.internal.storage.StorageDestroyedException: IGN-CMN-65535 TraceId:a6e3d4b2-595f-45df-a285-1ba43d6aecc6 Storage is in the process of being destroyed or already destroyed: [tableId=18] 10:24:10 at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:332) ~[?:?] 10:24:10 at java.base/java.util.concurrent.CompletableFuture.andTree(CompletableFuture.java:1527) ~[?:?] 10:24:10 at java.base/java.util.concurrent.CompletableFuture.allOf(CompletableFuture.java:2419) ~[?:?] 10:24:10 at org.apache.ignite.internal.table.distributed.TableManager.lambda$beforeZoneReplicaStarted$13(TableManager.java:718) ~[ignite-table-3.1.0-SNAPSHOT.jar:?] 10:24:10 at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187) ~[?:?] 10:24:10 at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309) ~[?:?] 10:24:10 at org.apache.ignite.internal.table.distributed.TableManager.lambda$beforeZoneReplicaStarted$15(TableManager.java:689) ~[ignite-table-3.1.0-SNAPSHOT.jar:?] 10:24:10 at org.apache.ignite.internal.util.IgniteUtils.inBusyLockAsync(IgniteUtils.java:926) ~[ignite-core-3.1.0-SNAPSHOT.jar:?] 10:24:10 at org.apache.ignite.internal.table.distributed.TableManager.beforeZoneReplicaStarted(TableManager.java:688) ~[ignite-table-3.1.0-SNAPSHOT.jar:?] 10:24:10 at org.apache.ignite.internal.event.AbstractEventProducer.fireEvent(AbstractEventProducer.java:88) ~[ignite-core-3.1.0-SNAPSHOT.jar:?] 10:24:10 at org.apache.ignite.internal.partition.replicator.PartitionReplicaLifecycleManager.lambda$createZonePartitionReplicationNode$27(PartitionReplicaLifecycleManager.java:674) ~[ignite-partition-replicator-3.1.0-SNAPSHOT.jar:?] 10:24:10 at org.apache.ignite.internal.replicator.ReplicaStateManager.lambda$startReplica$1(ReplicaStateManager.java:226) ~[ignite-replicator-3.1.0-SNAPSHOT.jar:?] 10:24:10 at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934) ~[?:?] 10:24:10 at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:911) ~[?:?] 10:24:10 ... 4 more 10:24:10 Caused by: org.apache.ignite.internal.storage.StorageDestroyedException: Storage is in the process of being destroyed or already destroyed: [tableId=18] 10:24:10 at org.apache.ignite.internal.storage.util.StorageUtils.throwExceptionDependingOnStorageState(StorageUtils.java:146) ~[ignite-storage-api-3.1.0-SNAPSHOT.jar:?] 10:24:10 at org.apache.ignite.internal.storage.pagememory.AbstractPageMemoryTableStorage.busy(AbstractPageMemoryTableStorage.java:267) ~[ignite-storage-page-memory-3.1.0-SNAPSHOT.jar:?] 10:24:10 at org.apache.ignite.internal.storage.pagememory.AbstractPageMemoryTableStorage.getMvPartition(AbstractPageMemoryTableStorage.java:158) ~[ignite-storage-page-memory-3.1.0-SNAPSHOT.jar:?] 10:24:10 at org.apache.ignite.internal.storage.engine.ThreadAssertingMvTableStorage.getMvPartition(ThreadAssertingMvTableStorage.java:62) ~[ignite-storage-api-3.1.0-SNAPSHOT.jar:?] 10:24:10 at org.apache.ignite.internal.table.distributed.TableManager.lambda$getOrCreatePartitionStorages$146(TableManager.java:2624) ~[ignite-table-3.1.0-SNAPSHOT.jar:?] 10:24:10 at java.base/java.util.stream.IntPipeline$1$1.accept(IntPipeline.java:180) ~[?:?] 10:24:10 at java.base/java.util.stream.Streams$IntStreamBuilderImpl.forEachRemaining(Streams.java:502) ~[?:?] 10:24:10 at java.base/java.util.Spliterator$OfInt.forEachRemaining(Spliterator.java:711) ~[?:?] 10:24:10 at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?] 10:24:10 at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?] 10:24:10 at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575) ~[?:?] 10:24:10 at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260) ~[?:?] 10:24:10 at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616) ~[?:?] 10:24:10 at org.apache.ignite.internal.table.distributed.TableManager.getOrCreatePartitionStorages(TableManager.java:2644) ~[ignite-table-3.1.0-SNAPSHOT.jar:?] 10:24:10 at org.apache.ignite.internal.table.distributed.TableManager.lambda$beforeZoneReplicaStarted$10(TableManager.java:699) ~[ignite-table-3.1.0-SNAPSHOT.jar:?] 10:24:10 at org.apache.ignite.internal.util.IgniteUtils.inBusyLockAsync(IgniteUtils.java:926) ~[ignite-core-3.1.0-SNAPSHOT.jar:?] 10:24:10 at org.apache.ignite.internal.table.distributed.TableManager.lambda$beforeZoneReplicaStarted$11(TableManager.java:698) ~[ignite-table-3.1.0-SNAPSHOT.jar:?] 10:24:10 at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[?:?] 10:24:10 at java.base/java.util.concurrent.ConcurrentHashMap$KeySpliterator.forEachRemaining(ConcurrentHashMap.java:3573) ~[?:?] 10:24:10 at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?] 10:24:10 at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?] 10:24:10 at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575) ~[?:?] 10:24:10 at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260) ~[?:?] 10:24:10 at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616) ~[?:?] 10:24:10 at org.apache.ignite.internal.table.distributed.TableManager.lambda$beforeZoneReplicaStarted$13(TableManager.java:716) ~[ignite-table-3.1.0-SNAPSHOT.jar:?] 10:24:10 at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187) ~[?:?] 10:24:10 at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309) ~[?:?] 10:24:10 at org.apache.ignite.internal.table.distributed.TableManager.lambda$beforeZoneReplicaStarted$15(TableManager.java:689) ~[ignite-table-3.1.0-SNAPSHOT.jar:?] 10:24:10 at org.apache.ignite.internal.util.IgniteUtils.inBusyLockAsync(IgniteUtils.java:926) ~[ignite-core-3.1.0-SNAPSHOT.jar:?] 10:24:10 at org.apache.ignite.internal.table.distributed.TableManager.beforeZoneReplicaStarted(TableManager.java:688) ~[ignite-table-3.1.0-SNAPSHOT.jar:?] 10:24:10 at org.apache.ignite.internal.event.AbstractEventProducer.fireEvent(AbstractEventProducer.java:88) ~[ignite-core-3.1.0-SNAPSHOT.jar:?] 10:24:10 at org.apache.ignite.internal.partition.replicator.PartitionReplicaLifecycleManager.lambda$createZonePartitionReplicationNode$27(PartitionReplicaLifecycleManager.java:674) ~[ignite-partition-replicator-3.1.0-SNAPSHOT.jar:?] 10:24:10 at org.apache.ignite.internal.replicator.ReplicaStateManager.lambda$startReplica$1(ReplicaStateManager.java:226) ~[ignite-replicator-3.1.0-SNAPSHOT.jar:?] 10:24:10 at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934) ~[?:?] 10:24:10 at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:911) ~[?:?] 10:24:10 ... 4 more{noformat} The root cause of the issue is related to the fact that `TableManger#tablesPerZone` mapping is not properly synchronized and cleaned up when a table is dropped from the default zone (it doesn't matter, honestly, that the zone is the default one). When a table is dropped, the mentioned collection still contains a reference to the table, and later we may restart storages for this table due to changing assignments, for instance. was: {code:java} java.lang.AssertionError: The earliest catalog version does not match. Expected: is <9> but: was <8> java.lang.AssertionError: The earliest catalog version does not match. Expected: is <9> but: was <8> at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20) at org.apache.ignite.internal.catalog.compaction.ItCatalogCompactionTest.lambda$expectEarliestCatalogVersion$11(ItCatalogCompactionTest.java:279) at org.awaitility.core.AssertionCondition.lambda$new$0(AssertionCondition.java:53) at org.awaitility.core.ConditionAwaiter$ConditionPoller.call(ConditionAwaiter.java:248) at org.awaitility.core.ConditionAwaiter$ConditionPoller.call(ConditionAwaiter.java:235) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at org.awaitility.core.SameThreadExecutorService.execute(SameThreadExecutorService.java:79) at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) at org.awaitility.core.ConditionAwaiter.await(ConditionAwaiter.java:101) at org.awaitility.core.AssertionCondition.await(AssertionCondition.java:119) at org.awaitility.core.AssertionCondition.await(AssertionCondition.java:31) at org.awaitility.core.ConditionFactory.until(ConditionFactory.java:1160) at org.awaitility.core.ConditionFactory.untilAsserted(ConditionFactory.java:790) at org.apache.ignite.internal.catalog.compaction.ItCatalogCompactionTest.expectEarliestCatalogVersion(ItCatalogCompactionTest.java:274) at org.apache.ignite.internal.catalog.compaction.ItCatalogCompactionTest.testCompactionRun(ItCatalogCompactionTest.java:235){code} The root cause of the issue is related to the fact that `TableManger#tablesPerZone` mapping is not properly synchronized and cleaned up when a table is dropped from the default zone (it doesn't matter, honestly, that the zone is the default one). When a table is dropped, the mentioned collection still contains a reference to the table, and later we may restart storages for this table due to changing assignments, for instance. > ItCatalogCompactionTest.testCompactionRun fails in case of enabled colocation > ----------------------------------------------------------------------------- > > Key: IGNITE-25260 > URL: https://issues.apache.org/jira/browse/IGNITE-25260 > Project: Ignite > Issue Type: Bug > Reporter: Alexander Lapin > Assignee: Vyacheslav Koptilin > Priority: Major > Labels: ignite-3 > Time Spent: 10m > Remaining Estimate: 0h > > {code:java} > java.lang.AssertionError: The earliest catalog version does not match. > Expected: is <9> but: was <8> > java.lang.AssertionError: The earliest catalog version does not match. > Expected: is <9> > but: was <8> > at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20) > at > org.apache.ignite.internal.catalog.compaction.ItCatalogCompactionTest.lambda$expectEarliestCatalogVersion$11(ItCatalogCompactionTest.java:279) > at > org.awaitility.core.AssertionCondition.lambda$new$0(AssertionCondition.java:53) > at > org.awaitility.core.ConditionAwaiter$ConditionPoller.call(ConditionAwaiter.java:248) > at > org.awaitility.core.ConditionAwaiter$ConditionPoller.call(ConditionAwaiter.java:235) > at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) > at > org.awaitility.core.SameThreadExecutorService.execute(SameThreadExecutorService.java:79) > at > java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) > at org.awaitility.core.ConditionAwaiter.await(ConditionAwaiter.java:101) > at org.awaitility.core.AssertionCondition.await(AssertionCondition.java:119) > at org.awaitility.core.AssertionCondition.await(AssertionCondition.java:31) > at org.awaitility.core.ConditionFactory.until(ConditionFactory.java:1160) > at > org.awaitility.core.ConditionFactory.untilAsserted(ConditionFactory.java:790) > at > org.apache.ignite.internal.catalog.compaction.ItCatalogCompactionTest.expectEarliestCatalogVersion(ItCatalogCompactionTest.java:274) > at > org.apache.ignite.internal.catalog.compaction.ItCatalogCompactionTest.testCompactionRun(ItCatalogCompactionTest.java:235){code} > The real issue is the following error: > {noformat} > [2025-05-07T10:24:10,178][ERROR][%icct_n_3346%tableManager-io-3][FailureManager] > Critical system error detected. Will be handled accordingly to configured > handler [hnd=NoOpFailureHandler [super=AbstractFailureHandler > [ignoredFailureTypes=UnmodifiableSet [SYSTEM_WORKER_BLOCKED, > SYSTEM_CRITICAL_OPERATION_TIMEOUT]]], failureCtx=CRITICAL_ERROR] > 10:24:10 org.apache.ignite.internal.failure.StackTraceCapturingException: > Replica start failed [groupId=0_part_2] > 10:24:10 at > org.apache.ignite.internal.failure.FailureManager.process(FailureManager.java:161) > ~[ignite-failure-handler-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > org.apache.ignite.internal.failure.FailureManager.process(FailureManager.java:138) > ~[ignite-failure-handler-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > org.apache.ignite.internal.replicator.ReplicaStateManager.lambda$startReplica$4(ReplicaStateManager.java:243) > ~[ignite-replicator-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) > [?:?] > 10:24:10 at > java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) > [?:?] > 10:24:10 at > java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) > [?:?] > 10:24:10 at > java.base/java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) > [?:?] > 10:24:10 at > java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:914) > [?:?] > 10:24:10 at > java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) > [?:?] > 10:24:10 at > java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) > [?:?] > 10:24:10 at > java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) > [?:?] > 10:24:10 at java.base/java.lang.Thread.run(Thread.java:833) [?:?] > 10:24:10 Caused by: java.util.concurrent.CompletionException: > org.apache.ignite.internal.storage.StorageDestroyedException: IGN-CMN-65535 > TraceId:a6e3d4b2-595f-45df-a285-1ba43d6aecc6 Storage is in the process of > being destroyed or already destroyed: [tableId=18] > 10:24:10 at > java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:332) > ~[?:?] > 10:24:10 at > java.base/java.util.concurrent.CompletableFuture.andTree(CompletableFuture.java:1527) > ~[?:?] > 10:24:10 at > java.base/java.util.concurrent.CompletableFuture.allOf(CompletableFuture.java:2419) > ~[?:?] > 10:24:10 at > org.apache.ignite.internal.table.distributed.TableManager.lambda$beforeZoneReplicaStarted$13(TableManager.java:718) > ~[ignite-table-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187) > ~[?:?] > 10:24:10 at > java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309) > ~[?:?] > 10:24:10 at > org.apache.ignite.internal.table.distributed.TableManager.lambda$beforeZoneReplicaStarted$15(TableManager.java:689) > ~[ignite-table-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > org.apache.ignite.internal.util.IgniteUtils.inBusyLockAsync(IgniteUtils.java:926) > ~[ignite-core-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > org.apache.ignite.internal.table.distributed.TableManager.beforeZoneReplicaStarted(TableManager.java:688) > ~[ignite-table-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > org.apache.ignite.internal.event.AbstractEventProducer.fireEvent(AbstractEventProducer.java:88) > ~[ignite-core-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > org.apache.ignite.internal.partition.replicator.PartitionReplicaLifecycleManager.lambda$createZonePartitionReplicationNode$27(PartitionReplicaLifecycleManager.java:674) > ~[ignite-partition-replicator-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > org.apache.ignite.internal.replicator.ReplicaStateManager.lambda$startReplica$1(ReplicaStateManager.java:226) > ~[ignite-replicator-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934) > ~[?:?] > 10:24:10 at > java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:911) > ~[?:?] > 10:24:10 ... 4 more > 10:24:10 Caused by: > org.apache.ignite.internal.storage.StorageDestroyedException: Storage is in > the process of being destroyed or already destroyed: [tableId=18] > 10:24:10 at > org.apache.ignite.internal.storage.util.StorageUtils.throwExceptionDependingOnStorageState(StorageUtils.java:146) > ~[ignite-storage-api-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > org.apache.ignite.internal.storage.pagememory.AbstractPageMemoryTableStorage.busy(AbstractPageMemoryTableStorage.java:267) > ~[ignite-storage-page-memory-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > org.apache.ignite.internal.storage.pagememory.AbstractPageMemoryTableStorage.getMvPartition(AbstractPageMemoryTableStorage.java:158) > ~[ignite-storage-page-memory-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > org.apache.ignite.internal.storage.engine.ThreadAssertingMvTableStorage.getMvPartition(ThreadAssertingMvTableStorage.java:62) > ~[ignite-storage-api-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > org.apache.ignite.internal.table.distributed.TableManager.lambda$getOrCreatePartitionStorages$146(TableManager.java:2624) > ~[ignite-table-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > java.base/java.util.stream.IntPipeline$1$1.accept(IntPipeline.java:180) ~[?:?] > 10:24:10 at > java.base/java.util.stream.Streams$IntStreamBuilderImpl.forEachRemaining(Streams.java:502) > ~[?:?] > 10:24:10 at > java.base/java.util.Spliterator$OfInt.forEachRemaining(Spliterator.java:711) > ~[?:?] > 10:24:10 at > java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) > ~[?:?] > 10:24:10 at > java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) > ~[?:?] > 10:24:10 at > java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575) > ~[?:?] > 10:24:10 at > java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260) > ~[?:?] > 10:24:10 at > java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616) > ~[?:?] > 10:24:10 at > org.apache.ignite.internal.table.distributed.TableManager.getOrCreatePartitionStorages(TableManager.java:2644) > ~[ignite-table-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > org.apache.ignite.internal.table.distributed.TableManager.lambda$beforeZoneReplicaStarted$10(TableManager.java:699) > ~[ignite-table-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > org.apache.ignite.internal.util.IgniteUtils.inBusyLockAsync(IgniteUtils.java:926) > ~[ignite-core-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > org.apache.ignite.internal.table.distributed.TableManager.lambda$beforeZoneReplicaStarted$11(TableManager.java:698) > ~[ignite-table-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) > ~[?:?] > 10:24:10 at > java.base/java.util.concurrent.ConcurrentHashMap$KeySpliterator.forEachRemaining(ConcurrentHashMap.java:3573) > ~[?:?] > 10:24:10 at > java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) > ~[?:?] > 10:24:10 at > java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) > ~[?:?] > 10:24:10 at > java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575) > ~[?:?] > 10:24:10 at > java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260) > ~[?:?] > 10:24:10 at > java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616) > ~[?:?] > 10:24:10 at > org.apache.ignite.internal.table.distributed.TableManager.lambda$beforeZoneReplicaStarted$13(TableManager.java:716) > ~[ignite-table-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187) > ~[?:?] > 10:24:10 at > java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309) > ~[?:?] > 10:24:10 at > org.apache.ignite.internal.table.distributed.TableManager.lambda$beforeZoneReplicaStarted$15(TableManager.java:689) > ~[ignite-table-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > org.apache.ignite.internal.util.IgniteUtils.inBusyLockAsync(IgniteUtils.java:926) > ~[ignite-core-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > org.apache.ignite.internal.table.distributed.TableManager.beforeZoneReplicaStarted(TableManager.java:688) > ~[ignite-table-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > org.apache.ignite.internal.event.AbstractEventProducer.fireEvent(AbstractEventProducer.java:88) > ~[ignite-core-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > org.apache.ignite.internal.partition.replicator.PartitionReplicaLifecycleManager.lambda$createZonePartitionReplicationNode$27(PartitionReplicaLifecycleManager.java:674) > ~[ignite-partition-replicator-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > org.apache.ignite.internal.replicator.ReplicaStateManager.lambda$startReplica$1(ReplicaStateManager.java:226) > ~[ignite-replicator-3.1.0-SNAPSHOT.jar:?] > 10:24:10 at > java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934) > ~[?:?] > 10:24:10 at > java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:911) > ~[?:?] > 10:24:10 ... 4 more{noformat} > The root cause of the issue is related to the fact that > `TableManger#tablesPerZone` mapping is not properly synchronized and cleaned > up when a table is dropped from the default zone (it doesn't matter, > honestly, that the zone is the default one). When a table is dropped, the > mentioned collection still contains a reference to the table, and later we > may restart storages for this table due to changing assignments, for instance. -- This message was sent by Atlassian Jira (v8.20.10#820010)