Kirill Tkalenko created IGNITE-25180:
----------------------------------------

             Summary: Fix race between drop index and partition garbage 
collection
                 Key: IGNITE-25180
                 URL: https://issues.apache.org/jira/browse/IGNITE-25180
             Project: Ignite
          Issue Type: Bug
            Reporter: Kirill Tkalenko
            Assignee: Kirill Tkalenko


In the tests, an error was found in the partition garbage collection related to 
indexes.
After analyzing the error and the code, I found out that we have a race between 
dropping the index and garbage collecting, this needs to be fixed.

I think that it is worth doing the same as subsequent work with indexes, if 
some index was not found, then it was deleted and we simply skip it.

This error is unlikely, and I managed to reproduce it for a table with 250+ 
indexes, and not the first time.

{noformat}
[09:55:36]W:             [:ignite-table:integrationTest] 
[2025-04-12T05:55:36,409][ERROR][%iet_n_3345%mv-gc-8][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]
[09:55:36]W:             [:ignite-table:integrationTest] 
org.apache.ignite.internal.failure.FailureManager$StackTraceCapturingException: 
java.lang.AssertionError: QualifiedName[schemaName='PUBLIC', objectName='TEST'] 
part 1
[09:55:36]W:             [:ignite-table:integrationTest]        at 
org.apache.ignite.internal.failure.FailureManager.process(FailureManager.java:155)
 ~[ignite-failure-handler-9.0.127-SNAPSHOT.jar:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
org.apache.ignite.internal.failure.FailureManager.process(FailureManager.java:132)
 ~[ignite-failure-handler-9.0.127-SNAPSHOT.jar:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
org.apache.ignite.internal.table.distributed.gc.MvGc.lambda$scheduleGcForStorage$8(MvGc.java:234)
 ~[ignite-table-9.0.127-SNAPSHOT.jar:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
 [?:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
 [?:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
 [?:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
java.base/java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614)
 [?:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:653)
 [?:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482)
 [?:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
 [?:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
 [?:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
java.base/java.lang.Thread.run(Thread.java:833) [?:?]
[09:55:36]W:             [:ignite-table:integrationTest] Caused by: 
java.util.concurrent.CompletionException: java.lang.AssertionError: 
QualifiedName[schemaName='PUBLIC', objectName='TEST'] part 1
[09:55:36]W:             [:ignite-table:integrationTest]        at 
java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
 ~[?:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
 ~[?:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:649)
 ~[?:?]
[09:55:36]W:             [:ignite-table:integrationTest]        ... 4 more
[09:55:36]W:             [:ignite-table:integrationTest] Caused by: 
java.lang.AssertionError: QualifiedName[schemaName='PUBLIC', objectName='TEST'] 
part 1
[09:55:36]W:             [:ignite-table:integrationTest]        at 
org.apache.ignite.internal.table.IndexWrapper$SortedIndexWrapper.getStorage(IndexWrapper.java:63)
 ~[ignite-table-9.0.127-SNAPSHOT.jar:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
org.apache.ignite.internal.table.TableImpl.lambda$indexStorageAdapters$1(TableImpl.java:256)
 ~[ignite-table-9.0.127-SNAPSHOT.jar:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
org.apache.ignite.internal.table.distributed.index.IndexUpdateHandler.indexStorageById(IndexUpdateHandler.java:253)
 ~[ignite-table-9.0.127-SNAPSHOT.jar:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
org.apache.ignite.internal.table.distributed.index.IndexUpdateHandler.indexesSnapshot(IndexUpdateHandler.java:197)
 ~[ignite-table-9.0.127-SNAPSHOT.jar:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
org.apache.ignite.internal.table.distributed.index.IndexUpdateHandler.tryRemoveFromIndexes(IndexUpdateHandler.java:104)
 ~[ignite-table-9.0.127-SNAPSHOT.jar:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
org.apache.ignite.internal.table.distributed.gc.GcUpdateHandler.internalVacuum(GcUpdateHandler.java:148)
 ~[ignite-table-9.0.127-SNAPSHOT.jar:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
org.apache.ignite.internal.table.distributed.gc.GcUpdateHandler.lambda$internalVacuumBatch$1(GcUpdateHandler.java:108)
 ~[ignite-table-9.0.127-SNAPSHOT.jar:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
org.apache.ignite.internal.storage.pagememory.mv.PersistentPageMemoryMvPartitionStorage.lambda$runConsistently$0(PersistentPageMemoryMvPartitionStorage.java:187)
 ~[ignite-storage-page-memory-9.0.127-SNAPSHOT.jar:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
org.apache.ignite.internal.storage.pagememory.mv.AbstractPageMemoryMvPartitionStorage.busy(AbstractPageMemoryMvPartitionStorage.java:967)
 ~[ignite-storage-page-memory-9.0.127-SNAPSHOT.jar:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
org.apache.ignite.internal.storage.pagememory.mv.PersistentPageMemoryMvPartitionStorage.runConsistently(PersistentPageMemoryMvPartitionStorage.java:177)
 ~[ignite-storage-page-memory-9.0.127-SNAPSHOT.jar:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
org.apache.ignite.internal.storage.ThreadAssertingMvPartitionStorage.runConsistently(ThreadAssertingMvPartitionStorage.java:47)
 ~[ignite-storage-api-9.0.127-SNAPSHOT.jar:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
org.apache.ignite.internal.table.distributed.raft.snapshot.SnapshotAwarePartitionDataStorage.runConsistently(SnapshotAwarePartitionDataStorage.java:80)
 ~[ignite-table-9.0.127-SNAPSHOT.jar:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
org.apache.ignite.internal.table.distributed.gc.GcUpdateHandler.internalVacuumBatch(GcUpdateHandler.java:102)
 ~[ignite-table-9.0.127-SNAPSHOT.jar:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
org.apache.ignite.internal.table.distributed.gc.GcUpdateHandler.vacuumBatch(GcUpdateHandler.java:80)
 ~[ignite-table-9.0.127-SNAPSHOT.jar:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
org.apache.ignite.internal.table.distributed.gc.MvGc.lambda$scheduleGcForStorage$7(MvGc.java:226)
 ~[ignite-table-9.0.127-SNAPSHOT.jar:?]
[09:55:36]W:             [:ignite-table:integrationTest]        at 
java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:646)
 ~[?:?]
[09:55:36]W:             [:ignite-table:integrationTest]        ... 4 more

{noformat}




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

Reply via email to