You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by md...@apache.org on 2018/05/23 18:26:03 UTC
[03/14] hbase git commit: HBASE-20571 JMXJsonServlet generates
invalid JSON if it has NaN in metrics
HBASE-20571 JMXJsonServlet generates invalid JSON if it has NaN in metrics
- CacheStats won't generate NaN metrics.
- JSONBean class will serialize special floating point values as
"NaN", "Infinity" or "-Infinity"
Signed-off-by: Andrew Purtell <ap...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/6148b478
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/6148b478
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/6148b478
Branch: refs/heads/HBASE-20478
Commit: 6148b4785d5fb9b1f8fbe40e5c4293950ec03012
Parents: 8c9825a
Author: Balazs Meszaros <ba...@cloudera.com>
Authored: Fri May 11 16:30:38 2018 +0200
Committer: Andrew Purtell <ap...@apache.org>
Committed: Wed May 16 12:20:39 2018 -0700
----------------------------------------------------------------------
.../org/apache/hadoop/hbase/util/JSONBean.java | 6 ++-
.../hadoop/hbase/io/hfile/CacheStats.java | 40 +++++++++++++++++---
2 files changed, 40 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/6148b478/hbase-common/src/main/java/org/apache/hadoop/hbase/util/JSONBean.java
----------------------------------------------------------------------
diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/JSONBean.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/JSONBean.java
index 80ffa27..da89a41 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/JSONBean.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/JSONBean.java
@@ -310,7 +310,11 @@ public class JSONBean {
jg.writeEndArray();
} else if(value instanceof Number) {
Number n = (Number)value;
- jg.writeNumber(n.toString());
+ if (Double.isFinite(n.doubleValue())) {
+ jg.writeNumber(n.toString());
+ } else {
+ jg.writeString(n.toString());
+ }
} else if(value instanceof Boolean) {
Boolean b = (Boolean)value;
jg.writeBoolean(b);
http://git-wip-us.apache.org/repos/asf/hbase/blob/6148b478/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheStats.java
----------------------------------------------------------------------
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 5edd259..c1c92e1 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;
+ }
+
+ return getHitCount() / requestCount;
}
public double getHitCachingRatio() {
- return ((double) getHitCachingCount() / (double) getRequestCachingCount());
+ double requestCachingCount = getRequestCachingCount();
+
+ if (requestCachingCount == 0) {
+ return 0;
+ }
+
+ return getHitCachingCount() / requestCachingCount;
}
public double getMissRatio() {
- return ((double) getMissCount() / (double) getRequestCount());
+ double requestCount = getRequestCount();
+
+ if (requestCount == 0) {
+ return 0;
+ }
+
+ return getMissCount() / requestCount;
}
public double getMissCachingRatio() {
- return ((double) getMissCachingCount() / (double) getRequestCachingCount());
+ double requestCachingCount = getRequestCachingCount();
+
+ if (requestCachingCount == 0) {
+ return 0;
+ }
+
+ return getMissCachingCount() / requestCachingCount;
}
public double evictedPerEviction() {
- return ((double) getEvictedCount() / (double) getEvictionCount());
+ double evictionCount = getEvictionCount();
+
+ if (evictionCount == 0) {
+ return 0;
+ }
+
+ return getEvictedCount() / evictionCount;
}
public long getFailedInserts() {