From 8998e8796438963c4e5eb87165e72af0c2fe1c8b Mon Sep 17 00:00:00 2001 From: Gian Merlino Date: Mon, 24 Apr 2017 19:51:46 -0700 Subject: [PATCH 1/2] DirectDruidClient: Fix division by zero. Introduced in #3954 when some floating math was changed to integer math. This patch restores the old math. --- server/src/main/java/io/druid/client/DirectDruidClient.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/io/druid/client/DirectDruidClient.java b/server/src/main/java/io/druid/client/DirectDruidClient.java index d8dc7882a74b..3b8e2adfee5a 100644 --- a/server/src/main/java/io/druid/client/DirectDruidClient.java +++ b/server/src/main/java/io/druid/client/DirectDruidClient.java @@ -269,13 +269,14 @@ public ClientResponse done(ClientResponse clientRespon { long stopTimeNs = System.nanoTime(); long nodeTimeNs = stopTimeNs - responseStartTimeNs; + final long nodeTimeMs = TimeUnit.NANOSECONDS.toMillis(nodeTimeNs); log.debug( "Completed queryId[%s] request to url[%s] with %,d bytes returned in %,d millis [%,f b/s].", query.getId(), url, byteCount.get(), - TimeUnit.NANOSECONDS.toMillis(nodeTimeNs), - byteCount.get() / TimeUnit.NANOSECONDS.toSeconds(nodeTimeNs) + nodeTimeMs, + byteCount.get() / (0.001 * nodeTimeMs) ); queryMetrics.reportNodeTime(nodeTimeNs); queryMetrics.reportNodeBytes(byteCount.get()); From 2d7d54e5bf41e7bcf00ece3decd6210f11b83184 Mon Sep 17 00:00:00 2001 From: Gian Merlino Date: Mon, 24 Apr 2017 20:07:09 -0700 Subject: [PATCH 2/2] Added comment. --- server/src/main/java/io/druid/client/DirectDruidClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/java/io/druid/client/DirectDruidClient.java b/server/src/main/java/io/druid/client/DirectDruidClient.java index 3b8e2adfee5a..c3311798a5a6 100644 --- a/server/src/main/java/io/druid/client/DirectDruidClient.java +++ b/server/src/main/java/io/druid/client/DirectDruidClient.java @@ -276,7 +276,7 @@ public ClientResponse done(ClientResponse clientRespon url, byteCount.get(), nodeTimeMs, - byteCount.get() / (0.001 * nodeTimeMs) + byteCount.get() / (0.001 * nodeTimeMs) // Floating math; division by zero will yield Inf, not exception ); queryMetrics.reportNodeTime(nodeTimeNs); queryMetrics.reportNodeBytes(byteCount.get());