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

Reply via email to