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 {
