From 9e4dd590f5ad9c259b57a548031b6a671ae21327 Mon Sep 17 00:00:00 2001 From: Balazs Meszaros Date: Fri, 11 May 2018 16:30:38 +0200 Subject: [PATCH] HBASE-20571 JMXJsonServlet generates invalid JSON if it has NaN in metrics --- .../hadoop/hbase/io/hfile/CacheStats.java | 40 ++++++++++++++++--- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheStats.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheStats.java index 5edd2591e8..cffec16c47 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheStats.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheStats.java @@ -388,23 +388,53 @@ public class CacheStats { } public double getHitRatio() { - return ((double) getHitCount() / (double) getRequestCount()); + double requestCount = getRequestCount(); + + if (requestCount == 0) { + return 0; + } else { + return getHitCount() / requestCount; + } } public double getHitCachingRatio() { - return ((double) getHitCachingCount() / (double) getRequestCachingCount()); + double requestCachingCount = getRequestCachingCount(); + + if (requestCachingCount == 0) { + return 0; + } else { + return getHitCachingCount() / requestCachingCount; + } } public double getMissRatio() { - return ((double) getMissCount() / (double) getRequestCount()); + double requestCount = getRequestCount(); + + if (requestCount == 0) { + return 0; + } else { + return getMissCount() / requestCount; + } } public double getMissCachingRatio() { - return ((double) getMissCachingCount() / (double) getRequestCachingCount()); + double requestCachingCount = getRequestCachingCount(); + + if (requestCachingCount == 0) { + return 0; + } else { + return getMissCachingCount() / requestCachingCount; + } } public double evictedPerEviction() { - return ((double) getEvictedCount() / (double) getEvictionCount()); + double evictionCount = getEvictionCount(); + + if (evictionCount == 0) { + return 0; + } else { + return getEvictedCount() / evictionCount; + } } public long getFailedInserts() { -- 2.17.0