Repository: ignite
Updated Branches:
  refs/heads/master 39f6e899c -> 0dc906f01


IGNITE-6565 Use long type for size and keySize in cache metrics

Signed-off-by: Anton Vinogradov <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/0dc906f0
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/0dc906f0
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/0dc906f0

Branch: refs/heads/master
Commit: 0dc906f01e347bced9f775aca31e2e7fa0be835d
Parents: 39f6e89
Author: Alexander Menshikov <[email protected]>
Authored: Wed Apr 25 14:03:24 2018 +0300
Committer: Anton Vinogradov <[email protected]>
Committed: Wed Apr 25 14:03:24 2018 +0300

----------------------------------------------------------------------
 .../org/apache/ignite/cache/CacheMetrics.java   | 11 ++++++
 .../cache/CacheClusterMetricsMXBeanImpl.java    |  5 +++
 .../cache/CacheLocalMetricsMXBeanImpl.java      |  5 +++
 .../processors/cache/CacheMetricsImpl.java      | 30 ++++++++++++++-
 .../processors/cache/CacheMetricsSnapshot.java  | 10 +++++
 .../platform/cache/PlatformCache.java           |  1 +
 .../internal/visor/cache/VisorCacheMetrics.java | 17 +++++++++
 .../ignite/mxbean/CacheMetricsMXBean.java       |  4 ++
 .../cache/GridCacheAbstractMetricsSelfTest.java | 39 ++++++++++++++++++++
 .../platform/PlatformCacheWriteMetricsTask.java |  5 +++
 .../Cache/CacheMetricsTest.cs                   |  7 ++++
 .../Apache.Ignite.Core/Cache/ICacheMetrics.cs   |  8 ++++
 .../Impl/Cache/CacheMetricsImpl.cs              |  7 ++++
 13 files changed, 148 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/0dc906f0/modules/core/src/main/java/org/apache/ignite/cache/CacheMetrics.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/CacheMetrics.java 
b/modules/core/src/main/java/org/apache/ignite/cache/CacheMetrics.java
index c466bee..99bf2c2 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/CacheMetrics.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/CacheMetrics.java
@@ -240,14 +240,25 @@ public interface CacheMetrics {
      * Gets number of non-{@code null} values in the cache.
      *
      * @return Number of non-{@code null} values in the cache.
+     * @deprecated Can overflow. Use {@link CacheMetrics#getCacheSize()} 
instead.
      */
+    @Deprecated
     public int getSize();
 
     /**
+     * Gets number of non-{@code null} values in the cache as a long value.
+     *
+     * @return Number of non-{@code null} values in the cache.
+     */
+    public long getCacheSize();
+
+    /**
      * Gets number of keys in the cache, possibly with {@code null} values.
      *
      * @return Number of keys in the cache.
+     * @deprecated Can overflow. Use {@link CacheMetrics#getCacheSize()} 
instead.
      */
+    @Deprecated
     public int getKeySize();
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/0dc906f0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClusterMetricsMXBeanImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClusterMetricsMXBeanImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClusterMetricsMXBeanImpl.java
index ce6416f..32603cb 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClusterMetricsMXBeanImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClusterMetricsMXBeanImpl.java
@@ -115,6 +115,11 @@ class CacheClusterMetricsMXBeanImpl implements 
CacheMetricsMXBean {
     }
 
     /** {@inheritDoc} */
+    @Override public long getCacheSize() {
+        return cache.clusterMetrics().getCacheSize();
+    }
+
+    /** {@inheritDoc} */
     @Override public int getKeySize() {
         return cache.clusterMetrics().getKeySize();
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/0dc906f0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLocalMetricsMXBeanImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLocalMetricsMXBeanImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLocalMetricsMXBeanImpl.java
index 438c8c6..d3060d3 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLocalMetricsMXBeanImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLocalMetricsMXBeanImpl.java
@@ -116,6 +116,11 @@ class CacheLocalMetricsMXBeanImpl implements 
CacheMetricsMXBean {
     }
 
     /** {@inheritDoc} */
+    @Override public long getCacheSize() {
+        return cache.metrics0().getCacheSize();
+    }
+
+    /** {@inheritDoc} */
     @Override public int getKeySize() {
         return cache.metrics0().getKeySize();
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/0dc906f0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java
index b402ff2..96f40bf 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java
@@ -255,6 +255,11 @@ public class CacheMetricsImpl implements CacheMetrics {
     }
 
     /** {@inheritDoc} */
+    @Override public long getCacheSize() {
+        return getEntriesStat().cacheSize();
+    }
+
+    /** {@inheritDoc} */
     @Override public int getKeySize() {
         return getEntriesStat().keySize();
     }
@@ -754,6 +759,7 @@ public class CacheMetricsImpl implements CacheMetrics {
         long offHeapBackupEntriesCnt = 0L;
         long heapEntriesCnt = 0L;
         int size = 0;
+        long sizeLong = 0L;
         boolean isEmpty;
 
         try {
@@ -765,8 +771,9 @@ public class CacheMetricsImpl implements CacheMetrics {
                     offHeapBackupEntriesCnt = offHeapEntriesCnt;
 
                     size = cctx.cache().size();
+                    sizeLong = cctx.cache().sizeLong();
 
-                    heapEntriesCnt = size;
+                    heapEntriesCnt = sizeLong;
                 }
             }
             else {
@@ -806,6 +813,8 @@ public class CacheMetricsImpl implements CacheMetrics {
 
                     heapEntriesCnt += part.publicSize(cctx.cacheId());
                 }
+
+                sizeLong = offHeapEntriesCnt;
             }
         }
         catch (Exception e) {
@@ -816,6 +825,7 @@ public class CacheMetricsImpl implements CacheMetrics {
             offHeapBackupEntriesCnt = -1L;
             heapEntriesCnt = -1L;
             size = -1;
+            sizeLong = -1L;
         }
 
         isEmpty = (offHeapEntriesCnt == 0);
@@ -827,6 +837,7 @@ public class CacheMetricsImpl implements CacheMetrics {
         stat.offHeapBackupEntriesCount(offHeapBackupEntriesCnt);
         stat.heapEntriesCount(heapEntriesCnt);
         stat.size(size);
+        stat.cacheSize(sizeLong);
         stat.keySize(size);
         stat.isEmpty(isEmpty);
         stat.totalPartitionsCount(owningPartCnt + movingPartCnt);
@@ -1039,6 +1050,9 @@ public class CacheMetricsImpl implements CacheMetrics {
         /** Size. */
         private int size;
 
+        /** Long size. */
+        private long cacheSize;
+
         /** Key size. */
         private int keySize;
 
@@ -1158,6 +1172,20 @@ public class CacheMetricsImpl implements CacheMetrics {
         }
 
         /**
+         * @return Long size.
+         */
+        public long cacheSize() {
+            return cacheSize;
+        }
+
+        /**
+         * @param cacheSize Size long.
+         */
+        public void cacheSize(long cacheSize) {
+            this.cacheSize = cacheSize;
+        }
+
+        /**
          * @return Is empty.
          */
         public boolean isEmpty() {

http://git-wip-us.apache.org/repos/asf/ignite/blob/0dc906f0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsSnapshot.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsSnapshot.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsSnapshot.java
index e693720..539ad59 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsSnapshot.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsSnapshot.java
@@ -110,6 +110,9 @@ public class CacheMetricsSnapshot implements CacheMetrics, 
Externalizable {
     /** Number of non-{@code null} values in the cache. */
     private int size;
 
+    /** Number of non-{@code null} values in the cache as long value as a long 
value. */
+    private long cacheSize;
+
     /** Number of keys in the cache, possibly with {@code null} values. */
     private int keySize;
 
@@ -286,6 +289,7 @@ public class CacheMetricsSnapshot implements CacheMetrics, 
Externalizable {
         offHeapAllocatedSize = m.getOffHeapAllocatedSize();
 
         size = entriesStat.size();
+        cacheSize = entriesStat.cacheSize();
         keySize = entriesStat.keySize();
         isEmpty = entriesStat.isEmpty();
 
@@ -351,6 +355,7 @@ public class CacheMetricsSnapshot implements CacheMetrics, 
Externalizable {
         writeBehindStoreBatchSize = loc.getWriteBehindStoreBatchSize();
         writeBehindBufSize = loc.getWriteBehindBufferSize();
         size = loc.getSize();
+        cacheSize = loc.getCacheSize();
         keySize = loc.getKeySize();
 
         keyType = loc.getKeyType();
@@ -634,6 +639,11 @@ public class CacheMetricsSnapshot implements CacheMetrics, 
Externalizable {
     }
 
     /** {@inheritDoc} */
+    @Override public long getCacheSize() {
+        return cacheSize;
+    }
+
+    /** {@inheritDoc} */
     @Override public int getKeySize() {
         return keySize;
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/0dc906f0/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/PlatformCache.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/PlatformCache.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/PlatformCache.java
index c78f2d6..818fd67 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/PlatformCache.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/PlatformCache.java
@@ -1503,6 +1503,7 @@ public class PlatformCache extends PlatformAbstractTarget 
{
         writer.writeLong(metrics.getEstimatedRebalancingFinishTime());
         writer.writeLong(metrics.getRebalancingStartTime());
         writer.writeLong(metrics.getRebalanceClearingPartitionsLeft());
+        writer.writeLong(metrics.getCacheSize());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/0dc906f0/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheMetrics.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheMetrics.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheMetrics.java
index 5d8bc81..59f16b2 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheMetrics.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheMetrics.java
@@ -55,6 +55,9 @@ public class VisorCacheMetrics extends 
VisorDataTransferObject {
     /** Gets number of keys in the cache, possibly with {@code null} values. */
     private int keySize;
 
+    /** Number of non-{@code null} values in the cache as a long value. */
+    private long cacheSize;
+
     /** Total number of reads of the owning entity (either cache or entry). */
     private long reads;
 
@@ -224,6 +227,8 @@ public class VisorCacheMetrics extends 
VisorDataTransferObject {
         size = m.getSize();
         keySize = m.getKeySize();
 
+        cacheSize = m.getCacheSize();
+
         reads = m.getCacheGets();
         writes = m.getCachePuts() + m.getCacheRemovals();
         hits = m.getCacheHits();
@@ -457,6 +462,13 @@ public class VisorCacheMetrics extends 
VisorDataTransferObject {
     }
 
     /**
+     * @return Number of non-{@code null} values in the cache as a long value.
+     */
+    public long getCacheSize() {
+        return cacheSize;
+    }
+
+    /**
      * @return Gets query metrics for cache.
      */
     public VisorQueryMetrics getQueryMetrics() {
@@ -694,6 +706,8 @@ public class VisorCacheMetrics extends 
VisorDataTransferObject {
         out.writeLong(rebalancingBytesRate);
 
         out.writeObject(qryMetrics);
+
+        out.writeLong(cacheSize);
     }
 
     /** {@inheritDoc} */
@@ -751,6 +765,9 @@ public class VisorCacheMetrics extends 
VisorDataTransferObject {
         rebalancingBytesRate = in.readLong();
 
         qryMetrics = (VisorQueryMetrics)in.readObject();
+
+        if (in.available() > 0)
+            cacheSize = in.readLong();
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/0dc906f0/modules/core/src/main/java/org/apache/ignite/mxbean/CacheMetricsMXBean.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/mxbean/CacheMetricsMXBean.java 
b/modules/core/src/main/java/org/apache/ignite/mxbean/CacheMetricsMXBean.java
index ae03a5a..16bdede 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/mxbean/CacheMetricsMXBean.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/mxbean/CacheMetricsMXBean.java
@@ -152,6 +152,10 @@ public interface CacheMetricsMXBean extends 
CacheStatisticsMXBean, CacheMXBean,
     public int getSize();
 
     /** {@inheritDoc} */
+    @MXBeanDescription("Number of non-null values in the cache as a long 
value.")
+    public long getCacheSize();
+
+    /** {@inheritDoc} */
     @MXBeanDescription("Number of keys in the cache (possibly with null 
values).")
     public int getKeySize();
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/0dc906f0/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractMetricsSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractMetricsSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractMetricsSelfTest.java
index e207158..7948569 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractMetricsSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractMetricsSelfTest.java
@@ -675,6 +675,45 @@ public abstract class GridCacheAbstractMetricsSelfTest 
extends GridCacheAbstract
     }
 
     /**
+     * Test {@link CacheMetrics#getSize()} and {@link 
CacheMetrics#getCacheSize()} work equally.
+     *
+     * @throws Exception If failed.
+     */
+    public void testCacheSizeWorksAsSize() throws Exception {
+        IgniteCache<Integer, Integer> cache = 
grid(0).cache(DEFAULT_CACHE_NAME);
+
+        assertEquals(cache.metrics().getSize(), 
cache.metrics().getCacheSize());
+
+        for (int i = 0; i < KEY_CNT; i++) {
+            cache.put(i, i);
+
+            CacheMetrics metrics = cache.metrics();
+
+            assertEquals(metrics.getSize(), metrics.getCacheSize());
+
+            CacheMetrics localMetrics = cache.localMetrics();
+
+            assertEquals(localMetrics.getSize(), localMetrics.getCacheSize());
+        }
+
+        for (int i = 0; i < KEY_CNT / 2; i++) {
+            cache.remove(i, i);
+
+            CacheMetrics metrics = cache.metrics();
+
+            assertEquals(metrics.getSize(), metrics.getCacheSize());
+
+            CacheMetrics localMetrics = cache.localMetrics();
+
+            assertEquals(localMetrics.getSize(), localMetrics.getCacheSize());
+        }
+
+        cache.removeAll();
+
+        assertEquals(cache.metrics().getSize(), 
cache.metrics().getCacheSize());
+    }
+
+    /**
      * @throws Exception If failed.
      */
     public void testTxEvictions() throws Exception {

http://git-wip-us.apache.org/repos/asf/ignite/blob/0dc906f0/modules/core/src/test/java/org/apache/ignite/platform/PlatformCacheWriteMetricsTask.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/platform/PlatformCacheWriteMetricsTask.java
 
b/modules/core/src/test/java/org/apache/ignite/platform/PlatformCacheWriteMetricsTask.java
index 3b7bb89..44a15d5 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/platform/PlatformCacheWriteMetricsTask.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/platform/PlatformCacheWriteMetricsTask.java
@@ -468,5 +468,10 @@ public class PlatformCacheWriteMetricsTask extends 
ComputeTaskAdapter<Long, Obje
         @Override public long getRebalanceClearingPartitionsLeft() {
             return 64;
         }
+
+        /** {@inheritDoc} */
+        @Override public long getCacheSize() {
+            return 65;
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/0dc906f0/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CacheMetricsTest.cs
----------------------------------------------------------------------
diff --git 
a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CacheMetricsTest.cs 
b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CacheMetricsTest.cs
index 3f671d9..129b4b5 100644
--- 
a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CacheMetricsTest.cs
+++ 
b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CacheMetricsTest.cs
@@ -67,10 +67,12 @@ namespace Apache.Ignite.Core.Tests.Cache
             var remoteMetrics = metrics.Item2;
 
             Assert.AreEqual(1, localMetrics.Size);
+            Assert.AreEqual(1, localMetrics.CacheSize);
             Assert.AreEqual(1, localMetrics.CacheGets);
             Assert.AreEqual(1, localMetrics.CachePuts);
 
             Assert.AreEqual(0, remoteMetrics.Size);
+            Assert.AreEqual(0, remoteMetrics.CacheSize);
             Assert.AreEqual(0, remoteMetrics.CacheGets);
             Assert.AreEqual(0, remoteMetrics.CachePuts);
         }
@@ -87,10 +89,12 @@ namespace Apache.Ignite.Core.Tests.Cache
             var remoteMetrics = metrics.Item2;
 
             Assert.AreEqual(1, localMetrics.Size);
+            Assert.AreEqual(1, localMetrics.CacheSize);
             Assert.AreEqual(1, localMetrics.CacheGets);
             Assert.AreEqual(1, localMetrics.CachePuts);
 
             Assert.AreEqual(0, remoteMetrics.Size);
+            Assert.AreEqual(0, remoteMetrics.CacheSize);
             Assert.AreEqual(1, remoteMetrics.CacheGets);
             Assert.AreEqual(1, remoteMetrics.CachePuts);
         }
@@ -111,10 +115,12 @@ namespace Apache.Ignite.Core.Tests.Cache
             var remoteMetrics = metrics.Item1;
 
             Assert.AreEqual(1, localMetrics.Size);
+            Assert.AreEqual(1, localMetrics.CacheSize);
             Assert.AreEqual(1, localMetrics.CacheGets);
             Assert.AreEqual(1, localMetrics.CachePuts);
 
             Assert.AreEqual(1, remoteMetrics.Size);
+            Assert.AreEqual(1, remoteMetrics.CacheSize);
             Assert.AreEqual(0, remoteMetrics.CacheGets);
             Assert.AreEqual(0, remoteMetrics.CachePuts);
         }
@@ -203,6 +209,7 @@ namespace Apache.Ignite.Core.Tests.Cache
                 Assert.AreEqual(59, metrics.HeapEntriesCount);
                 Assert.AreEqual(62, metrics.EstimatedRebalancingFinishTime);
                 Assert.AreEqual(63, metrics.RebalancingStartTime);
+                Assert.AreEqual(65, metrics.CacheSize);
                 Assert.AreEqual("foo", metrics.KeyType);
                 Assert.AreEqual("bar", metrics.ValueType);
                 Assert.AreEqual(true, metrics.IsStoreByValue);

http://git-wip-us.apache.org/repos/asf/ignite/blob/0dc906f0/modules/platforms/dotnet/Apache.Ignite.Core/Cache/ICacheMetrics.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/ICacheMetrics.cs 
b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/ICacheMetrics.cs
index a328cf5..d775c05 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/ICacheMetrics.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/ICacheMetrics.cs
@@ -257,6 +257,14 @@ namespace Apache.Ignite.Core.Cache
         int Size { get; }
 
         /// <summary>
+        /// Gets number of non-null values in the cache.
+        /// </summary>
+        /// <returns>
+        /// Number of non-null values in the cache.
+        /// </returns>
+        long CacheSize { get; }
+
+        /// <summary>
         /// Gets number of keys in the cache, possibly with null values.
         /// </summary>
         /// <returns>

http://git-wip-us.apache.org/repos/asf/ignite/blob/0dc906f0/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheMetricsImpl.cs
----------------------------------------------------------------------
diff --git 
a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheMetricsImpl.cs 
b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheMetricsImpl.cs
index fbc5d4c..1fdc877 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheMetricsImpl.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheMetricsImpl.cs
@@ -116,6 +116,9 @@ namespace Apache.Ignite.Core.Impl.Cache
         private readonly int _keySize;
 
         /** */
+        private readonly long _cacheSize;
+
+        /** */
         private readonly bool _isEmpty;
 
         /** */
@@ -323,6 +326,7 @@ namespace Apache.Ignite.Core.Impl.Cache
             _estimatedRebalancingFinishTime = reader.ReadLong();
             _rebalancingStartTime = reader.ReadLong();
             _rebalancingClearingPartitionsLeft = reader.ReadLong();
+            _cacheSize = reader.ReadLong();
         }
 
         /** <inheritDoc /> */
@@ -413,6 +417,9 @@ namespace Apache.Ignite.Core.Impl.Cache
         public int Size { get { return _size; } }
 
         /** <inheritDoc /> */
+        public long CacheSize { get { return _cacheSize; } }
+
+        /** <inheritDoc /> */
         public int KeySize { get { return _keySize; } }
 
         /** <inheritDoc /> */

Reply via email to