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