[ 
https://issues.apache.org/jira/browse/IGNITE-25180?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kirill Tkalenko updated IGNITE-25180:
-------------------------------------
    Fix Version/s: 3.1

> 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
>            Priority: Major
>              Labels: ignite-3
>             Fix For: 3.1
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> 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.
> 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