You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by si...@apache.org on 2022/06/16 01:03:46 UTC

[pinot] branch master updated: [BugFix] Avoid reporting negative values for server latency. (#8892)

This is an automated email from the ASF dual-hosted git repository.

siddteotia pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new 15fa8ccf55 [BugFix] Avoid reporting negative values for server latency. (#8892)
15fa8ccf55 is described below

commit 15fa8ccf55ea0908fc5d98ca51353c875720991c
Author: Vivek Iyer Vaidyanathan <vv...@gmail.com>
AuthorDate: Wed Jun 15 18:03:42 2022 -0700

    [BugFix] Avoid reporting negative values for server latency. (#8892)
    
    While working on testing changes in #8808, noticed that we report negative
    values for ResponseDelayMs in high QPS usecases. This can happen if the response
    from the server is received before the query is marked as submitted. This
    typically happens if request is sent to server but there's a delay in calling the
    callback in _channel.writeAndFlush(cb).
---
 .../java/org/apache/pinot/core/transport/ServerResponse.java | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/pinot-core/src/main/java/org/apache/pinot/core/transport/ServerResponse.java b/pinot-core/src/main/java/org/apache/pinot/core/transport/ServerResponse.java
index 90d558adb3..e358e0051d 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/transport/ServerResponse.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/transport/ServerResponse.java
@@ -62,11 +62,17 @@ public class ServerResponse {
   }
 
   public int getResponseDelayMs() {
-    if (_receiveDataTableTimeMs != 0) {
-      return (int) (_receiveDataTableTimeMs - _submitRequestTimeMs);
-    } else {
+    if (_receiveDataTableTimeMs == 0) {
       return -1;
     }
+    if (_receiveDataTableTimeMs < _submitRequestTimeMs) {
+      // We currently mark a request as submitted after sending the request to the server. In highQPS-lowLatency
+      // usecases, there can be a race condition where the DataTable/response is received before the request is
+      // marked as submitted. Return 0 to avoid reporting negative values.
+      return 0;
+    }
+
+    return (int) (_receiveDataTableTimeMs - _submitRequestTimeMs);
   }
 
   public int getResponseSize() {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org