This is an automated email from the ASF dual-hosted git repository. tkalkirill pushed a commit to branch ignite-27028 in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit 8084b95c0008c1e9005fc64b5ce35fd54bb57a96 Author: Kirill Tkalenko <[email protected]> AuthorDate: Wed Nov 12 08:59:14 2025 +0300 IGNITE-27028 wip --- .../pagememory/AbstractPageMemoryTableStorage.java | 33 +++++++++++++--------- .../PersistentPageMemoryTableStorage.java | 7 ++++- .../pagememory/VolatilePageMemoryTableStorage.java | 7 ++++- 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/AbstractPageMemoryTableStorage.java b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/AbstractPageMemoryTableStorage.java index 1da4f4af9dd..3f3a2a8de6f 100644 --- a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/AbstractPageMemoryTableStorage.java +++ b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/AbstractPageMemoryTableStorage.java @@ -294,22 +294,23 @@ public abstract class AbstractPageMemoryTableStorage<T extends AbstractPageMemor return busy(() -> mvPartitionStorages.startRebalance(partitionId, mvPartitionStorage -> { mvPartitionStorage.startRebalance(); - return clearStorageAndUpdateDataStructures(mvPartitionStorage) - .thenAccept(unused -> - mvPartitionStorage.runConsistently(locker -> { - mvPartitionStorage.lastAppliedOnRebalance(REBALANCE_IN_PROGRESS, REBALANCE_IN_PROGRESS); - - return null; - }) - ); + return clearStorageAndUpdateDataStructures( + mvPartitionStorage, + () -> mvPartitionStorage.runConsistently(locker -> { + mvPartitionStorage.lastAppliedOnRebalance(REBALANCE_IN_PROGRESS, REBALANCE_IN_PROGRESS); + + return null; + }) + ); })); } @Override public CompletableFuture<Void> abortRebalancePartition(int partitionId) { return busy(() -> mvPartitionStorages.abortRebalance(partitionId, mvPartitionStorage -> - clearStorageAndUpdateDataStructures(mvPartitionStorage) - .thenAccept(unused -> { + clearStorageAndUpdateDataStructures( + mvPartitionStorage, + () -> { mvPartitionStorage.runConsistently(locker -> { mvPartitionStorage.lastAppliedOnRebalance(0, 0); @@ -317,7 +318,8 @@ public abstract class AbstractPageMemoryTableStorage<T extends AbstractPageMemor }); mvPartitionStorage.completeRebalance(); - }) + } + ) )); } @@ -349,7 +351,7 @@ public abstract class AbstractPageMemoryTableStorage<T extends AbstractPageMemor try { mvPartitionStorage.startCleanup(); - return clearStorageAndUpdateDataStructures(mvPartitionStorage) + return clearStorageAndUpdateDataStructures(mvPartitionStorage, () -> {}) .whenComplete((unused, throwable) -> mvPartitionStorage.finishCleanup()); } catch (StorageException e) { mvPartitionStorage.finishCleanup(); @@ -367,9 +369,14 @@ public abstract class AbstractPageMemoryTableStorage<T extends AbstractPageMemor * Clears the partition multi-version storage and all its indexes, updates their internal data structures such as {@link BplusTree}, * {@link FreeList} and {@link ReuseList}. * + * @param mvPartitionStorage Storage to be cleared. + * @param afterUpdateStructuresCallback Callback after updating internal structures. * @return Future of the operation. */ - abstract CompletableFuture<Void> clearStorageAndUpdateDataStructures(AbstractPageMemoryMvPartitionStorage mvPartitionStorage); + abstract CompletableFuture<Void> clearStorageAndUpdateDataStructures( + AbstractPageMemoryMvPartitionStorage mvPartitionStorage, + Runnable afterUpdateStructuresCallback + ); /** * Returns the table ID. diff --git a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryTableStorage.java b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryTableStorage.java index e9c50688e0b..7385839d8c7 100644 --- a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryTableStorage.java +++ b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryTableStorage.java @@ -332,7 +332,10 @@ public class PersistentPageMemoryTableStorage extends AbstractPageMemoryTableSto } @Override - CompletableFuture<Void> clearStorageAndUpdateDataStructures(AbstractPageMemoryMvPartitionStorage mvPartitionStorage) { + CompletableFuture<Void> clearStorageAndUpdateDataStructures( + AbstractPageMemoryMvPartitionStorage mvPartitionStorage, + Runnable afterUpdateStructuresCallback + ) { GroupPartitionId groupPartitionId = createGroupPartitionId(mvPartitionStorage.partitionId()); return destroyPartitionPhysically(groupPartitionId).thenAccept(unused -> { @@ -359,6 +362,8 @@ public class PersistentPageMemoryTableStorage extends AbstractPageMemoryTableSto gcQueue ); + afterUpdateStructuresCallback.run(); + return null; }); }); diff --git a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryTableStorage.java b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryTableStorage.java index 5dec337b499..1cf367f0f5c 100644 --- a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryTableStorage.java +++ b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryTableStorage.java @@ -175,7 +175,10 @@ public class VolatilePageMemoryTableStorage extends AbstractPageMemoryTableStora } @Override - CompletableFuture<Void> clearStorageAndUpdateDataStructures(AbstractPageMemoryMvPartitionStorage mvPartitionStorage) { + CompletableFuture<Void> clearStorageAndUpdateDataStructures( + AbstractPageMemoryMvPartitionStorage mvPartitionStorage, + Runnable afterUpdateStructuresCallback + ) { VolatilePageMemoryMvPartitionStorage volatilePartitionStorage = (VolatilePageMemoryMvPartitionStorage) mvPartitionStorage; volatilePartitionStorage.destroyStructures().whenComplete((res, ex) -> { @@ -196,6 +199,8 @@ public class VolatilePageMemoryTableStorage extends AbstractPageMemoryTableStora createGarbageCollectionTree(partitionId) ); + afterUpdateStructuresCallback.run(); + return nullCompletedFuture(); }
