Repository: ignite
Updated Branches:
  refs/heads/master 3b383d155 -> 16e969e2f


IGNITE-9518 Fix getPagesFillFactor returns NaN for empty region - Fixes #4717.

Signed-off-by: Dmitriy Govorukhin <[email protected]>


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

Branch: refs/heads/master
Commit: 16e969e2f11c3c5c949e23ed7fec82b5d44c3c0f
Parents: 3b383d1
Author: ibessonov <[email protected]>
Authored: Tue Sep 11 12:53:56 2018 +0300
Committer: Dmitriy Govorukhin <[email protected]>
Committed: Tue Sep 11 12:53:56 2018 +0300

----------------------------------------------------------------------
 .../cache/persistence/DataRegionMetricsImpl.java |  4 +++-
 .../pagemem/FillFactorMetricTest.java            | 19 +++++++++++++++++++
 2 files changed, 22 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/16e969e2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsImpl.java
index 04617ef..4334c74 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsImpl.java
@@ -172,7 +172,9 @@ public class DataRegionMetricsImpl implements 
DataRegionMetrics, AllocatedPageTr
 
         long totalAllocated = getPageSize() * totalAllocatedPages.longValue();
 
-        return (float) (totalAllocated - freeSpace) / totalAllocated;
+        return totalAllocated != 0 ?
+            (float) (totalAllocated - freeSpace) / totalAllocated
+            : 0f;
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/16e969e2/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/FillFactorMetricTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/FillFactorMetricTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/FillFactorMetricTest.java
index 42eaf36..ac65c6d 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/FillFactorMetricTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/FillFactorMetricTest.java
@@ -91,6 +91,25 @@ public class FillFactorMetricTest extends 
GridCommonAbstractTest {
     private final float[] curFillFactor = new float[NODES];
 
     /**
+     * Tests that {@link DataRegionMetrics#getPagesFillFactor()} doesn't 
return NaN for empty cache.
+     *
+     * @throws Exception if failed.
+     */
+    public void testEmptyCachePagesFillFactor() throws Exception {
+        startGrids(1);
+
+        // Cache is created in default region so MY_DATA_REGION will have 
"empty" metrics.
+        CacheConfiguration<Object, Object> cacheCfg = new 
CacheConfiguration<>().setName(MY_CACHE);
+        grid(0).getOrCreateCache(cacheCfg);
+
+        DataRegionMetrics m = grid(0).dataRegionMetrics(MY_DATA_REGION);
+
+        assertEquals(0, m.getTotalAllocatedPages());
+
+        assertEquals(0, m.getPagesFillFactor(), Float.MIN_VALUE);
+    }
+
+    /**
      * throws if failed.
      */
     public void testFillAndEmpty() throws Exception {

Reply via email to