This is an automated email from the ASF dual-hosted git repository.

apolovtsev pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new 9c4f2a784d IGNITE-22616 Implement 
AbstractPageMemoryMvPartitionStorage#estimatedSize (#4102)
9c4f2a784d is described below

commit 9c4f2a784dea60d8a6d0959cea5b01a8a76a2e12
Author: Alexander Polovtcev <[email protected]>
AuthorDate: Thu Jul 18 12:46:38 2024 +0300

    IGNITE-22616 Implement AbstractPageMemoryMvPartitionStorage#estimatedSize 
(#4102)
---
 .../storage/AbstractMvPartitionStorageTest.java    | 68 +++++++++++++++++++++-
 .../storage/AbstractMvTableStorageTest.java        | 25 ++++++++
 .../storage/pagememory/StoragePartitionMeta.java   | 55 +++++++++++++++--
 .../pagememory/StoragePartitionMetaFactory.java    |  3 +-
 .../storage/pagememory/StoragePartitionMetaIo.java | 25 ++++++++
 .../mv/AbstractPageMemoryMvPartitionStorage.java   | 20 +++++--
 .../mv/AddWriteCommittedInvokeClosure.java         | 10 ++++
 .../pagememory/mv/CommitWriteInvokeClosure.java    | 24 +++++++-
 .../mv/PersistentPageMemoryMvPartitionStorage.java | 15 +++++
 .../mv/VolatilePageMemoryMvPartitionStorage.java   | 23 ++++++++
 .../PersistentPageMemoryMvTableStorageTest.java    | 13 -----
 .../StoragePartitionMetaManagerTest.java           |  7 ++-
 .../pagememory/StoragePartitionMetaTest.java       | 48 +++++++++++----
 .../VolatilePageMemoryMvTableStorageTest.java      | 13 -----
 .../AbstractPageMemoryMvPartitionStorageTest.java  | 37 ------------
 ...ageMemoryMvPartitionStorageConcurrencyTest.java |  7 ---
 ...ageMemoryMvPartitionStorageConcurrencyTest.java |  7 ---
 .../rocksdb/RocksDbMvPartitionStorageTest.java     | 20 +++++--
 .../storage/rocksdb/RocksDbMvTableStorageTest.java |  6 ++
 .../ignite/internal/table/ItEstimatedSizeTest.java |  8 +--
 20 files changed, 320 insertions(+), 114 deletions(-)

diff --git 
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvPartitionStorageTest.java
 
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvPartitionStorageTest.java
index e859083cdb..92adba279a 100644
--- 
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvPartitionStorageTest.java
+++ 
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvPartitionStorageTest.java
@@ -1435,7 +1435,7 @@ public abstract class AbstractMvPartitionStorageTest 
extends BaseMvPartitionStor
     }
 
     @Test
-    public void estimatedSizeNeverFallsBelowZero() {
+    public void estimatedSizeNeverFallsBelowZeroUsingWriteCommitted() {
         assertThat(storage.estimatedSize(), is(0L));
 
         addWriteCommitted(ROW_ID, null, clock.now());
@@ -1456,7 +1456,42 @@ public abstract class AbstractMvPartitionStorageTest 
extends BaseMvPartitionStor
     }
 
     @Test
-    public void estimatedSizeShowsLatestRowsNumber() {
+    public void estimatedSizeNeverFallsBelowZeroUsingCommitWrite() {
+        assertThat(storage.estimatedSize(), is(0L));
+
+        UUID txId = UUID.randomUUID();
+
+        addWrite(ROW_ID, null, txId);
+
+        assertThat(storage.estimatedSize(), is(0L));
+
+        commitWrite(ROW_ID, clock.now());
+
+        assertThat(storage.estimatedSize(), is(0L));
+
+        addWriteCommitted(ROW_ID, binaryRow, clock.now());
+
+        assertThat(storage.estimatedSize(), is(1L));
+
+        addWrite(ROW_ID, null, txId);
+
+        assertThat(storage.estimatedSize(), is(1L));
+
+        commitWrite(ROW_ID, clock.now());
+
+        assertThat(storage.estimatedSize(), is(0L));
+
+        addWrite(ROW_ID, null, txId);
+
+        assertThat(storage.estimatedSize(), is(0L));
+
+        commitWrite(ROW_ID, clock.now());
+
+        assertThat(storage.estimatedSize(), is(0L));
+    }
+
+    @Test
+    public void estimatedSizeShowsLatestRowsNumberUsingWriteCommited() {
         assertThat(storage.estimatedSize(), is(0L));
 
         var rowId1 = new RowId(PARTITION_ID);
@@ -1473,6 +1508,35 @@ public abstract class AbstractMvPartitionStorageTest 
extends BaseMvPartitionStor
         assertThat(storage.estimatedSize(), is(2L));
     }
 
+    @Test
+    public void estimatedSizeShowsLatestRowsNumberUsingCommitWrite() {
+        assertThat(storage.estimatedSize(), is(0L));
+
+        var rowId1 = new RowId(PARTITION_ID);
+        var rowId2 = new RowId(PARTITION_ID);
+
+        UUID txId = UUID.randomUUID();
+
+        addWrite(rowId1, binaryRow, txId);
+        addWrite(rowId2, binaryRow, txId);
+
+        assertThat(storage.estimatedSize(), is(0L));
+
+        commitWrite(rowId1, clock.now());
+        commitWrite(rowId2, clock.now());
+
+        assertThat(storage.estimatedSize(), is(2L));
+
+        // Overwrite an existing row.
+        addWrite(rowId1, binaryRow, txId);
+
+        assertThat(storage.estimatedSize(), is(2L));
+
+        commitWrite(rowId1, clock.now());
+
+        assertThat(storage.estimatedSize(), is(2L));
+    }
+
     @Test
     public void estimatedSizeIsNotAffectedByGarbageTombstones() {
         assertThat(storage.estimatedSize(), is(0L));
diff --git 
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
 
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
index 1db331c084..455b8d3437 100644
--- 
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
+++ 
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
@@ -1450,6 +1450,31 @@ public abstract class AbstractMvTableStorageTest extends 
BaseMvStoragesTest {
         assertThat(mvPartitionStorage.estimatedSize(), is(0L));
     }
 
+    @Test
+    public void testEstimatedSizeAfterRestart() throws Exception {
+        MvPartitionStorage mvPartitionStorage = 
getOrCreateMvPartition(PARTITION_ID);
+
+        List<TestRow> rows = List.of(
+                new TestRow(new RowId(PARTITION_ID), binaryRow(new TestKey(0, 
"0"), new TestValue(0, "0"))),
+                new TestRow(new RowId(PARTITION_ID), binaryRow(new TestKey(1, 
"1"), new TestValue(1, "1")))
+        );
+
+        fillStorages(mvPartitionStorage, null, null, rows);
+
+        assertThat(mvPartitionStorage.flush(), willCompleteSuccessfully());
+
+        assertThat(mvPartitionStorage.estimatedSize(), is(2L));
+
+        // Restart storages.
+        tableStorage.close();
+
+        tableStorage = createMvTableStorage();
+
+        mvPartitionStorage = getOrCreateMvPartition(PARTITION_ID);
+
+        assertThat(mvPartitionStorage.estimatedSize(), 
is(tableStorage.isVolatile() ? 0L : 2L));
+    }
+
     private void startRebalanceWithChecks(
             int partitionId,
             MvPartitionStorage mvPartitionStorage,
diff --git 
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/StoragePartitionMeta.java
 
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/StoragePartitionMeta.java
index abfa6e16d4..7e4d94030d 100644
--- 
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/StoragePartitionMeta.java
+++ 
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/StoragePartitionMeta.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.internal.storage.pagememory;
 
 import java.util.UUID;
+import java.util.concurrent.atomic.AtomicLongFieldUpdater;
 import org.apache.ignite.internal.pagememory.persistence.PartitionMeta;
 import org.apache.ignite.internal.pagememory.persistence.PartitionMetaFactory;
 import org.apache.ignite.internal.pagememory.persistence.io.PartitionMetaIo;
@@ -31,6 +32,9 @@ public class StoragePartitionMeta extends PartitionMeta {
 
     public static final PartitionMetaFactory FACTORY = new 
StoragePartitionMetaFactory();
 
+    private static final AtomicLongFieldUpdater<StoragePartitionMeta> 
ESTIMATED_SIZE_UPDATER =
+            AtomicLongFieldUpdater.newUpdater(StoragePartitionMeta.class, 
"estimatedSize");
+
     private volatile long lastAppliedIndex;
 
     private volatile long lastAppliedTerm;
@@ -47,6 +51,8 @@ public class StoragePartitionMeta extends PartitionMeta {
 
     private volatile long gcQueueMetaPageId;
 
+    private volatile long estimatedSize;
+
     /**
      * Constructor.
      *
@@ -59,6 +65,7 @@ public class StoragePartitionMeta extends PartitionMeta {
      * @param versionChainTreeRootPageId Version chain tree root page ID.
      * @param indexTreeMetaPageId Index tree meta page ID.
      * @param gcQueueMetaPageId Garbage collection queue meta page ID.
+     * @param estimatedSize Estimated size of the partition.
      */
     public StoragePartitionMeta(
             int pageCount,
@@ -69,7 +76,8 @@ public class StoragePartitionMeta extends PartitionMeta {
             long freeListRootPageId,
             long versionChainTreeRootPageId,
             long indexTreeMetaPageId,
-            long gcQueueMetaPageId
+            long gcQueueMetaPageId,
+            long estimatedSize
     ) {
         super(pageCount);
         this.lastAppliedIndex = lastAppliedIndex;
@@ -80,6 +88,7 @@ public class StoragePartitionMeta extends PartitionMeta {
         this.versionChainTreeRootPageId = versionChainTreeRootPageId;
         this.indexTreeMetaPageId = indexTreeMetaPageId;
         this.gcQueueMetaPageId = gcQueueMetaPageId;
+        this.estimatedSize = estimatedSize;
     }
 
     /**
@@ -217,6 +226,31 @@ public class StoragePartitionMeta extends PartitionMeta {
         this.gcQueueMetaPageId = gcQueueMetaPageId;
     }
 
+    /**
+     * Returns the estimated size of this partition.
+     */
+    public long estimatedSize() {
+        return estimatedSize;
+    }
+
+    /**
+     * Increments the estimated size of this partition.
+     */
+    public void incrementEstimatedSize(@Nullable UUID checkpointId) {
+        updateSnapshot(checkpointId);
+
+        ESTIMATED_SIZE_UPDATER.incrementAndGet(this);
+    }
+
+    /**
+     * Decrements the estimated size of this partition.
+     */
+    public void decrementEstimatedSize(@Nullable UUID checkpointId) {
+        updateSnapshot(checkpointId);
+
+        ESTIMATED_SIZE_UPDATER.decrementAndGet(this);
+    }
+
     @Override
     protected StoragePartitionMetaSnapshot buildSnapshot(@Nullable UUID 
checkpointId) {
         return new StoragePartitionMetaSnapshot(
@@ -229,7 +263,8 @@ public class StoragePartitionMeta extends PartitionMeta {
                 indexTreeMetaPageId,
                 gcQueueMetaPageId,
                 pageCount(),
-                leaseStartTime
+                leaseStartTime,
+                estimatedSize
         );
     }
 
@@ -292,6 +327,8 @@ public class StoragePartitionMeta extends PartitionMeta {
 
         private final long leaseStartTime;
 
+        private final long estimatedSize;
+
         private StoragePartitionMetaSnapshot(
                 @Nullable UUID checkpointId,
                 long lastAppliedIndex,
@@ -302,7 +339,8 @@ public class StoragePartitionMeta extends PartitionMeta {
                 long indexTreeMetaPageId,
                 long gcQueueMetaPageId,
                 int pageCount,
-                long leaseStartTime
+                long leaseStartTime,
+                long estimatedSize
         ) {
             this.checkpointId = checkpointId;
             this.lastAppliedIndex = lastAppliedIndex;
@@ -314,6 +352,7 @@ public class StoragePartitionMeta extends PartitionMeta {
             this.gcQueueMetaPageId = gcQueueMetaPageId;
             this.pageCount = pageCount;
             this.leaseStartTime = leaseStartTime;
+            this.estimatedSize = estimatedSize;
         }
 
         /**
@@ -374,13 +413,18 @@ public class StoragePartitionMeta extends PartitionMeta {
 
         /**
          * Returns the lease start time.
-         *
-         * @return Lease start time.
          */
         public long leaseStartTime() {
             return leaseStartTime;
         }
 
+        /**
+         * Returns the estimated size of this partition.
+         */
+        public long estimatedSize() {
+            return estimatedSize;
+        }
+
         /**
          * Writes the contents of the snapshot to a page of type {@link 
StoragePartitionMetaIo}.
          *
@@ -399,6 +443,7 @@ public class StoragePartitionMeta extends PartitionMeta {
             storageMetaIo.setGcQueueMetaPageId(pageAddr, gcQueueMetaPageId);
             storageMetaIo.setPageCount(pageAddr, pageCount);
             storageMetaIo.setLeaseStartTime(pageAddr, leaseStartTime);
+            storageMetaIo.setEstimatedSize(pageAddr, estimatedSize);
         }
 
         /**
diff --git 
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/StoragePartitionMetaFactory.java
 
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/StoragePartitionMetaFactory.java
index d4b331107d..0f791b8f7c 100644
--- 
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/StoragePartitionMetaFactory.java
+++ 
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/StoragePartitionMetaFactory.java
@@ -39,7 +39,8 @@ public class StoragePartitionMetaFactory implements 
PartitionMetaFactory {
                 StoragePartitionMetaIo.getFreeListRootPageId(pageAddr),
                 metaIo.getVersionChainTreeRootPageId(pageAddr),
                 metaIo.getIndexTreeMetaPageId(pageAddr),
-                metaIo.getGcQueueMetaPageId(pageAddr)
+                metaIo.getGcQueueMetaPageId(pageAddr),
+                metaIo.getEstimatedSize(pageAddr)
         );
 
         return result.init(checkpointId);
diff --git 
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/StoragePartitionMetaIo.java
 
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/StoragePartitionMetaIo.java
index 11b5e4c61e..20e3c62bec 100644
--- 
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/StoragePartitionMetaIo.java
+++ 
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/StoragePartitionMetaIo.java
@@ -48,6 +48,8 @@ public class StoragePartitionMetaIo extends PartitionMetaIo {
 
     private static final int LEASE_START_TIME_OFF = GC_QUEUE_META_PAGE_ID_OFF 
+ Long.BYTES;
 
+    private static final int ESTIMATED_SIZE_OFF = LEASE_START_TIME_OFF + 
Long.BYTES;
+
 
     /** I/O versions. */
     public static final IoVersions<StoragePartitionMetaIo> VERSIONS = new 
IoVersions<>(new StoragePartitionMetaIo(1));
@@ -75,6 +77,7 @@ public class StoragePartitionMetaIo extends PartitionMetaIo {
         setGcQueueMetaPageId(pageAddr, 0);
         setPageCount(pageAddr, 0);
         setLeaseStartTime(pageAddr, HybridTimestamp.MIN_VALUE.longValue());
+        setEstimatedSize(pageAddr, 0);
     }
 
     /**
@@ -246,6 +249,27 @@ public class StoragePartitionMetaIo extends 
PartitionMetaIo {
         return getLong(pageAddr, LEASE_START_TIME_OFF);
     }
 
+    /**
+     * Sets the estimated size of this partition.
+     *
+     * @param pageAddr Page address.
+     * @param estimatedSize Estimated size.
+     */
+    public void setEstimatedSize(long pageAddr, long estimatedSize) {
+        assertPageType(pageAddr);
+
+        putLong(pageAddr, ESTIMATED_SIZE_OFF, estimatedSize);
+    }
+
+    /**
+     * Returns the estimated size of this partition.
+     *
+     * @param pageAddr Page address.
+     */
+    public long getEstimatedSize(long pageAddr) {
+        return getLong(pageAddr, ESTIMATED_SIZE_OFF);
+    }
+
     @Override
     protected void printPage(long addr, int pageSize, IgniteStringBuilder sb) {
         sb.app("TablePartitionMeta [").nl()
@@ -258,6 +282,7 @@ public class StoragePartitionMetaIo extends PartitionMetaIo 
{
                 
.app("gcQueueMetaPageId=").appendHex(getGcQueueMetaPageId(addr)).nl()
                 .app("pageCount=").app(getPageCount(addr)).nl()
                 .app("leaseStartTime=").app(getLeaseStartTime(addr)).nl()
+                .app("estimatedSize=").app(getEstimatedSize(addr)).nl()
                 .app(']');
     }
 }
diff --git 
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorage.java
 
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorage.java
index 71dbad0a29..07f4eff195 100644
--- 
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorage.java
+++ 
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorage.java
@@ -246,12 +246,6 @@ public abstract class AbstractPageMemoryMvPartitionStorage 
implements MvPartitio
         });
     }
 
-    // TODO: Implement, see https://issues.apache.org/jira/browse/IGNITE-22616
-    @Override
-    public long estimatedSize() {
-        throw new UnsupportedOperationException();
-    }
-
     private static boolean lookingForLatestVersion(HybridTimestamp timestamp) {
         return HybridTimestamp.MAX_VALUE.equals(timestamp);
     }
@@ -902,4 +896,18 @@ public abstract class AbstractPageMemoryMvPartitionStorage 
implements MvPartitio
     public CompletableFuture<Void> destroyIndex(int indexId) {
         return busy(() -> indexes.destroyIndex(indexId, 
renewableState.indexMetaTree()));
     }
+
+    /**
+     * Increments the estimated size of this partition.
+     *
+     * @see MvPartitionStorage#estimatedSize
+     */
+    public abstract void incrementEstimatedSize();
+
+    /**
+     * Decrements the estimated size of this partition.
+     *
+     * @see MvPartitionStorage#estimatedSize
+     */
+    public abstract void decrementEstimatedSize();
 }
diff --git 
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AddWriteCommittedInvokeClosure.java
 
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AddWriteCommittedInvokeClosure.java
index a54d34466e..a2d4ebf103 100644
--- 
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AddWriteCommittedInvokeClosure.java
+++ 
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AddWriteCommittedInvokeClosure.java
@@ -143,5 +143,15 @@ class AddWriteCommittedInvokeClosure implements 
InvokeClosure<VersionChain> {
         if (rowLinkForAddToGcQueue != NULL_LINK) {
             gcQueue.add(rowId, commitTimestamp, rowLinkForAddToGcQueue);
         }
+
+        if (operationType == OperationType.PUT) {
+            if (row == null) {
+                storage.decrementEstimatedSize();
+            } else if (rowLinkForAddToGcQueue == NULL_LINK) {
+                // Checking for NULL_LINK allows us to distinguish if a new 
version chain was created or not. In other words if this is
+                // an insert or an update to an existing row.
+                storage.incrementEstimatedSize();
+            }
+        }
     }
 }
diff --git 
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/CommitWriteInvokeClosure.java
 
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/CommitWriteInvokeClosure.java
index 2e9cde3a91..2a7565da3c 100644
--- 
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/CommitWriteInvokeClosure.java
+++ 
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/CommitWriteInvokeClosure.java
@@ -73,6 +73,11 @@ class CommitWriteInvokeClosure implements 
InvokeClosure<VersionChain> {
 
     private final UpdateTimestampHandler updateTimestampHandler;
 
+    /**
+     * Flag indicating that we are committing a tombstone.
+     */
+    private boolean isCurrentRowTombstone = false;
+
     CommitWriteInvokeClosure(
             RowId rowId,
             HybridTimestamp timestamp,
@@ -88,7 +93,6 @@ class CommitWriteInvokeClosure implements 
InvokeClosure<VersionChain> {
 
         this.freeList = localState.freeList();
         this.gcQueue = localState.gcQueue();
-
     }
 
     static class UpdateTimestampHandler implements 
PageHandler<HybridTimestamp, Object> {
@@ -128,7 +132,9 @@ class CommitWriteInvokeClosure implements 
InvokeClosure<VersionChain> {
         RowVersion current = storage.readRowVersion(oldRow.headLink(), 
DONT_LOAD_VALUE);
         RowVersion next = oldRow.hasNextLink() ? 
storage.readRowVersion(oldRow.nextLink(), DONT_LOAD_VALUE) : null;
 
-        if (next == null && current.isTombstone()) {
+        isCurrentRowTombstone = current.isTombstone();
+
+        if (next == null && isCurrentRowTombstone) {
             // If there is only one version, and it is a tombstone, then 
remove the chain.
             operationType = OperationType.REMOVE;
 
@@ -136,7 +142,7 @@ class CommitWriteInvokeClosure implements 
InvokeClosure<VersionChain> {
         }
 
         // If the previous and current version are tombstones, then delete the 
current version.
-        if (next != null && current.isTombstone() && next.isTombstone()) {
+        if (next != null && isCurrentRowTombstone && next.isTombstone()) {
             toRemove = current;
 
             newRow = VersionChain.createCommitted(oldRow.rowId(), next.link(), 
next.nextLink());
@@ -195,5 +201,17 @@ class CommitWriteInvokeClosure implements 
InvokeClosure<VersionChain> {
         if (rowLinkForAddToGcQueue != NULL_LINK) {
             gcQueue.add(rowId, timestamp, rowLinkForAddToGcQueue);
         }
+
+        // We need to check the "toRemove" field in order to avoid a situation 
when we are committing a tombstone
+        // over an existing tombstone.
+        if (operationType == OperationType.PUT && toRemove == null) {
+            if (isCurrentRowTombstone) {
+                storage.decrementEstimatedSize();
+            } else if (rowLinkForAddToGcQueue == NULL_LINK) {
+                // Checking for NULL_LINK allows us to distinguish if a new 
version chain was created or not. In other words if this is
+                // an insert or an update to an existing row.
+                storage.incrementEstimatedSize();
+            }
+        }
     }
 }
diff --git 
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/PersistentPageMemoryMvPartitionStorage.java
 
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/PersistentPageMemoryMvPartitionStorage.java
index f9f197c080..18148d2ea8 100644
--- 
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/PersistentPageMemoryMvPartitionStorage.java
+++ 
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/PersistentPageMemoryMvPartitionStorage.java
@@ -451,4 +451,19 @@ public class PersistentPageMemoryMvPartitionStorage 
extends AbstractPageMemoryMv
             throw new StorageException("Failed to save free list metadata: 
[{}]", e, createStorageInfo());
         }
     }
+
+    @Override
+    public long estimatedSize() {
+        return meta.estimatedSize();
+    }
+
+    @Override
+    public void incrementEstimatedSize() {
+        updateMeta((lastCheckpointId, meta) -> 
meta.incrementEstimatedSize(lastCheckpointId));
+    }
+
+    @Override
+    public void decrementEstimatedSize() {
+        updateMeta((lastCheckpointId, meta) -> 
meta.decrementEstimatedSize(lastCheckpointId));
+    }
 }
diff --git 
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/VolatilePageMemoryMvPartitionStorage.java
 
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/VolatilePageMemoryMvPartitionStorage.java
index a1f26490d7..e9d48d763a 100644
--- 
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/VolatilePageMemoryMvPartitionStorage.java
+++ 
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/VolatilePageMemoryMvPartitionStorage.java
@@ -27,6 +27,7 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutorService;
+import java.util.concurrent.atomic.AtomicLongFieldUpdater;
 import java.util.function.Consumer;
 import java.util.function.Predicate;
 import org.apache.ignite.internal.hlc.HybridTimestamp;
@@ -55,6 +56,9 @@ public class VolatilePageMemoryMvPartitionStorage extends 
AbstractPageMemoryMvPa
 
     private static final Predicate<HybridTimestamp> NEVER_LOAD_VALUE = ts -> 
false;
 
+    private static final 
AtomicLongFieldUpdater<VolatilePageMemoryMvPartitionStorage> 
ESTIMATED_SIZE_UPDATER =
+            
AtomicLongFieldUpdater.newUpdater(VolatilePageMemoryMvPartitionStorage.class, 
"estimatedSize");
+
     /** Last applied index value. */
     private volatile long lastAppliedIndex;
 
@@ -67,6 +71,8 @@ public class VolatilePageMemoryMvPartitionStorage extends 
AbstractPageMemoryMvPa
     /** Last group configuration. */
     private volatile byte @Nullable [] groupConfig;
 
+    private volatile long estimatedSize;
+
     /**
      * Constructor.
      *
@@ -343,6 +349,8 @@ public class VolatilePageMemoryMvPartitionStorage extends 
AbstractPageMemoryMvPa
                 indexMetaTree,
                 gcQueue
         );
+
+        estimatedSize = 0;
     }
 
     @Override
@@ -351,4 +359,19 @@ public class VolatilePageMemoryMvPartitionStorage extends 
AbstractPageMemoryMvPa
 
         this.groupConfig = config;
     }
+
+    @Override
+    public long estimatedSize() {
+        return estimatedSize;
+    }
+
+    @Override
+    public void incrementEstimatedSize() {
+        ESTIMATED_SIZE_UPDATER.incrementAndGet(this);
+    }
+
+    @Override
+    public void decrementEstimatedSize() {
+        ESTIMATED_SIZE_UPDATER.decrementAndGet(this);
+    }
 }
diff --git 
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryMvTableStorageTest.java
 
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryMvTableStorageTest.java
index 53009c3ba3..698fa830fb 100644
--- 
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryMvTableStorageTest.java
+++ 
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryMvTableStorageTest.java
@@ -43,7 +43,6 @@ import 
org.apache.ignite.internal.testframework.WorkDirectoryExtension;
 import org.apache.ignite.internal.util.IgniteUtils;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.junit.jupiter.params.ParameterizedTest;
@@ -136,16 +135,4 @@ public class PersistentPageMemoryMvTableStorageTest 
extends AbstractMvTableStora
             );
         }
     }
-
-    @Disabled("https://issues.apache.org/jira/browse/IGNITE-22616";)
-    @Override
-    public void testEstimatedSizeAfterRebalance() {
-        super.testEstimatedSizeAfterRebalance();
-    }
-
-    @Disabled("https://issues.apache.org/jira/browse/IGNITE-22616";)
-    @Override
-    public void testEstimatedSizeAfterAbortRebalance() {
-        super.testEstimatedSizeAfterAbortRebalance();
-    }
 }
diff --git 
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/StoragePartitionMetaManagerTest.java
 
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/StoragePartitionMetaManagerTest.java
index d9e4fce7ec..5a731c0f6f 100644
--- 
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/StoragePartitionMetaManagerTest.java
+++ 
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/StoragePartitionMetaManagerTest.java
@@ -91,6 +91,7 @@ public class StoragePartitionMetaManagerTest extends 
BaseIgniteAbstractTest {
                 assertEquals(0, meta.freeListRootPageId());
                 assertEquals(1, meta.pageCount());
                 assertEquals(HybridTimestamp.MIN_VALUE.longValue(), 
meta.leaseStartTime());
+                assertEquals(0, meta.estimatedSize());
 
                 // Change the meta and write it to the file.
                 meta.lastApplied(null, 50, 10);
@@ -99,6 +100,7 @@ public class StoragePartitionMetaManagerTest extends 
BaseIgniteAbstractTest {
                 meta.freeListRootPageId(null, 900);
                 meta.incrementPageCount(null);
                 meta.updateLease(null, 500);
+                meta.incrementEstimatedSize(null);
 
                 manager.writeMetaToBuffer(partId, 
meta.metaSnapshot(UUID.randomUUID()), buffer);
 
@@ -120,13 +122,14 @@ public class StoragePartitionMetaManagerTest extends 
BaseIgniteAbstractTest {
                 assertEquals(900, meta.freeListRootPageId());
                 assertEquals(2, meta.pageCount());
                 assertEquals(500, meta.leaseStartTime());
+                assertEquals(1, meta.estimatedSize());
             }
 
             // Check with delta file.
             try (FilePageStore filePageStore = 
createFilePageStore(testFilePath)) {
                 manager.writeMetaToBuffer(
                         partId,
-                        new StoragePartitionMeta(4, 100, 10, 34, 1000, 900, 
300, 200, 400)
+                        new StoragePartitionMeta(4, 100, 10, 34, 1000, 900, 
300, 200, 400, 200)
                                 .init(null)
                                 .metaSnapshot(null),
                         buffer.rewind()
@@ -152,6 +155,7 @@ public class StoragePartitionMetaManagerTest extends 
BaseIgniteAbstractTest {
                 assertEquals(400, meta.gcQueueMetaPageId());
                 assertEquals(4, meta.pageCount());
                 assertEquals(1000, meta.leaseStartTime());
+                assertEquals(200, meta.estimatedSize());
             }
 
             // Let's check the broken CRC.
@@ -171,6 +175,7 @@ public class StoragePartitionMetaManagerTest extends 
BaseIgniteAbstractTest {
                 assertEquals(0, meta.versionChainTreeRootPageId());
                 assertEquals(0, meta.freeListRootPageId());
                 assertEquals(1, meta.pageCount());
+                assertEquals(0, meta.estimatedSize());
             }
         } finally {
             freeBuffer(buffer);
diff --git 
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/StoragePartitionMetaTest.java
 
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/StoragePartitionMetaTest.java
index 6ef1a42ab8..62195c21a8 100644
--- 
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/StoragePartitionMetaTest.java
+++ 
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/StoragePartitionMetaTest.java
@@ -126,38 +126,62 @@ public class StoragePartitionMetaTest {
         assertEquals(500, meta.freeListRootPageId());
     }
 
+    @Test
+    void testEstimatedSize() {
+        StoragePartitionMeta meta = createMeta();
+
+        assertEquals(0, meta.estimatedSize());
+
+        assertDoesNotThrow(() -> meta.incrementEstimatedSize(null));
+
+        assertEquals(1, meta.estimatedSize());
+
+        assertDoesNotThrow(() -> 
meta.incrementEstimatedSize(UUID.randomUUID()));
+
+        assertEquals(2, meta.estimatedSize());
+
+        assertDoesNotThrow(() -> meta.decrementEstimatedSize(null));
+
+        assertEquals(1, meta.estimatedSize());
+
+        assertDoesNotThrow(() -> 
meta.decrementEstimatedSize(UUID.randomUUID()));
+
+        assertEquals(0, meta.estimatedSize());
+    }
+
     @Test
     void testSnapshot() {
         StoragePartitionMeta meta = createMeta();
 
         UUID checkpointId = null;
 
-        checkSnapshot(meta.metaSnapshot(checkpointId), 0, 0, 0, 0, 0, 0);
-        checkSnapshot(meta.metaSnapshot(checkpointId = UUID.randomUUID()), 0, 
0, 0, 0, 0, 0);
+        checkSnapshot(meta.metaSnapshot(checkpointId), 0, 0, 0, 0, 0, 0, 0);
+        checkSnapshot(meta.metaSnapshot(checkpointId = UUID.randomUUID()), 0, 
0, 0, 0, 0, 0, 0);
 
         meta.lastApplied(checkpointId, 50, 5);
         meta.lastReplicationProtocolGroupConfigFirstPageId(checkpointId, 12);
         meta.versionChainTreeRootPageId(checkpointId, 300);
         meta.freeListRootPageId(checkpointId, 900);
         meta.incrementPageCount(checkpointId);
+        meta.incrementEstimatedSize(checkpointId);
 
-        checkSnapshot(meta.metaSnapshot(checkpointId), 0, 0, 0, 0, 0, 0);
-        checkSnapshot(meta.metaSnapshot(UUID.randomUUID()), 50, 5, 12, 300, 
900, 1);
+        checkSnapshot(meta.metaSnapshot(checkpointId), 0, 0, 0, 0, 0, 0, 0);
+        checkSnapshot(meta.metaSnapshot(UUID.randomUUID()), 50, 5, 12, 300, 
900, 1, 1);
 
         meta.lastApplied(checkpointId = UUID.randomUUID(), 51, 6);
         meta.lastReplicationProtocolGroupConfigFirstPageId(checkpointId, 34);
-        checkSnapshot(meta.metaSnapshot(checkpointId), 50, 5, 12, 300, 900, 1);
+        checkSnapshot(meta.metaSnapshot(checkpointId), 50, 5, 12, 300, 900, 1, 
1);
 
         meta.versionChainTreeRootPageId(checkpointId = UUID.randomUUID(), 303);
-        checkSnapshot(meta.metaSnapshot(checkpointId), 51, 6, 34, 300, 900, 1);
+        checkSnapshot(meta.metaSnapshot(checkpointId), 51, 6, 34, 300, 900, 1, 
1);
 
         meta.freeListRootPageId(checkpointId = UUID.randomUUID(), 909);
-        checkSnapshot(meta.metaSnapshot(checkpointId), 51, 6, 34, 303, 900, 1);
+        checkSnapshot(meta.metaSnapshot(checkpointId), 51, 6, 34, 303, 900, 1, 
1);
 
         meta.incrementPageCount(checkpointId = UUID.randomUUID());
-        checkSnapshot(meta.metaSnapshot(checkpointId), 51, 6, 34, 303, 909, 1);
+        checkSnapshot(meta.metaSnapshot(checkpointId), 51, 6, 34, 303, 909, 1, 
1);
 
-        checkSnapshot(meta.metaSnapshot(UUID.randomUUID()), 51, 6, 34, 303, 
909, 2);
+        checkSnapshot(meta.metaSnapshot(UUID.randomUUID()), 51, 6, 34, 303, 
909, 2, 1);
     }
 
     @Test
@@ -176,7 +200,8 @@ public class StoragePartitionMetaTest {
             long expLastGroupConfigFirstPageId,
             long expVersionChainTreeRootPageId,
             long expFreeListRootPageId,
-            int expPageCount
+            int expPageCount,
+            long expEstimatedSize
     ) {
         assertThat(snapshot.lastAppliedIndex(), equalTo(expLastAppliedIndex));
         assertThat(snapshot.lastAppliedTerm(), equalTo(expLastAppliedTerm));
@@ -184,10 +209,11 @@ public class StoragePartitionMetaTest {
         assertThat(snapshot.versionChainTreeRootPageId(), 
equalTo(expVersionChainTreeRootPageId));
         assertThat(snapshot.freeListRootPageId(), 
equalTo(expFreeListRootPageId));
         assertThat(snapshot.pageCount(), equalTo(expPageCount));
+        assertThat(snapshot.estimatedSize(), equalTo(expEstimatedSize));
     }
 
     private static StoragePartitionMeta createMeta() {
-        return new StoragePartitionMeta(0, 0, 0, 0, 0, 0, 0, 0, 0)
+        return new StoragePartitionMeta(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
                 .init(null);
     }
 }
diff --git 
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryMvTableStorageTest.java
 
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryMvTableStorageTest.java
index df03145f05..21478b0f53 100644
--- 
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryMvTableStorageTest.java
+++ 
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryMvTableStorageTest.java
@@ -48,7 +48,6 @@ import org.apache.ignite.internal.type.NativeTypes;
 import org.apache.ignite.internal.util.IgniteUtils;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -236,18 +235,6 @@ public class VolatilePageMemoryMvTableStorageTest extends 
AbstractMvTableStorage
         }
     }
 
-    @Disabled("https://issues.apache.org/jira/browse/IGNITE-22616";)
-    @Override
-    public void testEstimatedSizeAfterRebalance() {
-        super.testEstimatedSizeAfterRebalance();
-    }
-
-    @Disabled("https://issues.apache.org/jira/browse/IGNITE-22616";)
-    @Override
-    public void testEstimatedSizeAfterAbortRebalance() {
-        super.testEstimatedSizeAfterAbortRebalance();
-    }
-
     private VolatilePageMemoryDataRegion dataRegion() {
         return ((VolatilePageMemoryTableStorage) tableStorage).dataRegion();
     }
diff --git 
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorageTest.java
 
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorageTest.java
index 3607ed7a1c..ca368dc929 100644
--- 
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorageTest.java
+++ 
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorageTest.java
@@ -28,7 +28,6 @@ import org.apache.ignite.internal.schema.BinaryRow;
 import org.apache.ignite.internal.storage.AbstractMvPartitionStorageTest;
 import org.apache.ignite.internal.storage.PartitionTimestampCursor;
 import org.apache.ignite.internal.storage.RowId;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -110,40 +109,4 @@ abstract class AbstractPageMemoryMvPartitionStorageTest 
extends AbstractMvPartit
             assertThat(foundRow, isRow(longRow));
         }
     }
-
-    @Disabled("https://issues.apache.org/jira/browse/IGNITE-22616";)
-    @Override
-    public void estimatedSizeUsingWriteIntents() {
-        super.estimatedSizeUsingWriteIntents();
-    }
-
-    @Disabled("https://issues.apache.org/jira/browse/IGNITE-22616";)
-    @Override
-    public void estimatedSizeUsingCommittedWrites() {
-        super.estimatedSizeUsingCommittedWrites();
-    }
-
-    @Disabled("https://issues.apache.org/jira/browse/IGNITE-22616";)
-    @Override
-    public void estimatedSizeNeverFallsBelowZero() {
-        super.estimatedSizeNeverFallsBelowZero();
-    }
-
-    @Disabled("https://issues.apache.org/jira/browse/IGNITE-22616";)
-    @Override
-    public void estimatedSizeShowsLatestRowsNumber() {
-        super.estimatedSizeShowsLatestRowsNumber();
-    }
-
-    @Disabled("https://issues.apache.org/jira/browse/IGNITE-22616";)
-    @Override
-    public void estimatedSizeIsNotAffectedByGarbageTombstones() {
-        super.estimatedSizeIsNotAffectedByGarbageTombstones();
-    }
-
-    @Disabled("https://issues.apache.org/jira/browse/IGNITE-22616";)
-    @Override
-    public void estimatedSizeHandlesTransactionAborts() {
-        super.estimatedSizeHandlesTransactionAborts();
-    }
 }
diff --git 
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/PersistentPageMemoryMvPartitionStorageConcurrencyTest.java
 
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/PersistentPageMemoryMvPartitionStorageConcurrencyTest.java
index f10fca967f..f1b1abfe0f 100644
--- 
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/PersistentPageMemoryMvPartitionStorageConcurrencyTest.java
+++ 
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/PersistentPageMemoryMvPartitionStorageConcurrencyTest.java
@@ -38,7 +38,6 @@ import 
org.apache.ignite.internal.testframework.WorkDirectoryExtension;
 import org.apache.ignite.internal.util.IgniteUtils;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.extension.ExtendWith;
 
 @ExtendWith(WorkDirectoryExtension.class)
@@ -90,10 +89,4 @@ class PersistentPageMemoryMvPartitionStorageConcurrencyTest 
extends AbstractMvPa
                 engine == null ? null : engine::stop
         );
     }
-
-    @Disabled("https://issues.apache.org/jira/browse/IGNITE-22616";)
-    @Override
-    public void testConcurrentAddAndRemoveEstimatedSize() {
-        super.testConcurrentAddAndRemoveEstimatedSize();
-    }
 }
diff --git 
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/VolatilePageMemoryMvPartitionStorageConcurrencyTest.java
 
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/VolatilePageMemoryMvPartitionStorageConcurrencyTest.java
index 1836477c75..84a29c720f 100644
--- 
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/VolatilePageMemoryMvPartitionStorageConcurrencyTest.java
+++ 
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/VolatilePageMemoryMvPartitionStorageConcurrencyTest.java
@@ -33,7 +33,6 @@ import 
org.apache.ignite.internal.storage.pagememory.configuration.schema.Volati
 import org.apache.ignite.internal.util.IgniteUtils;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
 
 class VolatilePageMemoryMvPartitionStorageConcurrencyTest extends 
AbstractMvPartitionStorageConcurrencyTest {
     private VolatilePageMemoryStorageEngine engine;
@@ -71,10 +70,4 @@ class VolatilePageMemoryMvPartitionStorageConcurrencyTest 
extends AbstractMvPart
                 engine == null ? null : engine::stop
         );
     }
-
-    @Disabled("https://issues.apache.org/jira/browse/IGNITE-22616";)
-    @Override
-    public void testConcurrentAddAndRemoveEstimatedSize() {
-        super.testConcurrentAddAndRemoveEstimatedSize();
-    }
 }
diff --git 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorageTest.java
 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorageTest.java
index 59ecda3de5..8648722bbe 100644
--- 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorageTest.java
+++ 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorageTest.java
@@ -98,14 +98,26 @@ public class RocksDbMvPartitionStorageTest extends 
AbstractMvPartitionStorageTes
 
     @Disabled("https://issues.apache.org/jira/browse/IGNITE-22617";)
     @Override
-    public void estimatedSizeNeverFallsBelowZero() {
-        super.estimatedSizeNeverFallsBelowZero();
+    public void estimatedSizeNeverFallsBelowZeroUsingWriteCommitted() {
+        super.estimatedSizeNeverFallsBelowZeroUsingWriteCommitted();
     }
 
     @Disabled("https://issues.apache.org/jira/browse/IGNITE-22617";)
     @Override
-    public void estimatedSizeShowsLatestRowsNumber() {
-        super.estimatedSizeShowsLatestRowsNumber();
+    public void estimatedSizeNeverFallsBelowZeroUsingCommitWrite() {
+        super.estimatedSizeNeverFallsBelowZeroUsingCommitWrite();
+    }
+
+    @Disabled("https://issues.apache.org/jira/browse/IGNITE-22617";)
+    @Override
+    public void estimatedSizeShowsLatestRowsNumberUsingWriteCommited() {
+        super.estimatedSizeShowsLatestRowsNumberUsingWriteCommited();
+    }
+
+    @Disabled("https://issues.apache.org/jira/browse/IGNITE-22617";)
+    @Override
+    public void estimatedSizeShowsLatestRowsNumberUsingCommitWrite() {
+        super.estimatedSizeShowsLatestRowsNumberUsingCommitWrite();
     }
 
     @Disabled("https://issues.apache.org/jira/browse/IGNITE-22617";)
diff --git 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvTableStorageTest.java
 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvTableStorageTest.java
index 8e5751a5a6..ce2397730c 100644
--- 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvTableStorageTest.java
+++ 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvTableStorageTest.java
@@ -175,4 +175,10 @@ public class RocksDbMvTableStorageTest extends 
AbstractMvTableStorageTest {
     public void testEstimatedSizeAfterAbortRebalance() {
         super.testEstimatedSizeAfterAbortRebalance();
     }
+
+    @Disabled("https://issues.apache.org/jira/browse/IGNITE-22617";)
+    @Override
+    public void testEstimatedSizeAfterRestart() throws Exception {
+        super.testEstimatedSizeAfterRestart();
+    }
 }
diff --git 
a/modules/table/src/integrationTest/java/org/apache/ignite/internal/table/ItEstimatedSizeTest.java
 
b/modules/table/src/integrationTest/java/org/apache/ignite/internal/table/ItEstimatedSizeTest.java
index ed53068a3c..f1925000f4 100644
--- 
a/modules/table/src/integrationTest/java/org/apache/ignite/internal/table/ItEstimatedSizeTest.java
+++ 
b/modules/table/src/integrationTest/java/org/apache/ignite/internal/table/ItEstimatedSizeTest.java
@@ -17,6 +17,8 @@
 
 package org.apache.ignite.internal.table;
 
+import static 
org.apache.ignite.internal.TestDefaultProfilesNames.DEFAULT_AIMEM_PROFILE_NAME;
+import static 
org.apache.ignite.internal.TestDefaultProfilesNames.DEFAULT_AIPERSIST_PROFILE_NAME;
 import static 
org.apache.ignite.internal.TestDefaultProfilesNames.DEFAULT_TEST_PROFILE_NAME;
 import static org.apache.ignite.internal.TestWrappers.unwrapTableViewInternal;
 import static 
org.apache.ignite.internal.catalog.commands.CatalogUtils.IMMEDIATE_TIMER_VALUE;
@@ -53,10 +55,8 @@ public class ItEstimatedSizeTest extends 
ClusterPerTestIntegrationTest {
 
     private static final String[] ALL_STORAGE_PROFILES = {
             DEFAULT_TEST_PROFILE_NAME,
-            // TODO: https://issues.apache.org/jira/browse/IGNITE-22616
-            // DEFAULT_AIPERSIST_PROFILE_NAME,
-            // TODO: https://issues.apache.org/jira/browse/IGNITE-22616
-            // DEFAULT_AIMEM_PROFILE_NAME,
+            DEFAULT_AIPERSIST_PROFILE_NAME,
+            DEFAULT_AIMEM_PROFILE_NAME
             // TODO: https://issues.apache.org/jira/browse/IGNITE-22617
             // DEFAULT_ROCKSDB_PROFILE_NAME
     };


Reply via email to