You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by aa...@apache.org on 2022/07/31 08:47:48 UTC

[rocketmq-clients] branch master updated: Exclude negative delivery latency from metrics (#109)

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

aaronai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/rocketmq-clients.git


The following commit(s) were added to refs/heads/master by this push:
     new 26cf1cf  Exclude negative delivery latency from metrics (#109)
26cf1cf is described below

commit 26cf1cf628d54f76fead43827645402adb5f9b6b
Author: Aaron Ai <ya...@gmail.com>
AuthorDate: Sun Jul 31 16:47:44 2022 +0800

    Exclude negative delivery latency from metrics (#109)
---
 .../rocketmq/client/java/metrics/MessageMeterInterceptor.java  | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/java/client/src/main/java/org/apache/rocketmq/client/java/metrics/MessageMeterInterceptor.java b/java/client/src/main/java/org/apache/rocketmq/client/java/metrics/MessageMeterInterceptor.java
index 3039f31..f9c6a70 100644
--- a/java/client/src/main/java/org/apache/rocketmq/client/java/metrics/MessageMeterInterceptor.java
+++ b/java/client/src/main/java/org/apache/rocketmq/client/java/metrics/MessageMeterInterceptor.java
@@ -83,7 +83,15 @@ public class MessageMeterInterceptor implements MessageInterceptor {
             return;
         }
         final Timestamp deliveryTimestampFromRemote = optionalDeliveryTimestampFromRemote.get();
-        final long latency = System.currentTimeMillis() - Timestamps.toMillis(deliveryTimestampFromRemote);
+        final long currentTimeMillis = System.currentTimeMillis();
+        final long deliveryTimestampFromRemoteMillis = Timestamps.toMillis(deliveryTimestampFromRemote);
+        final long latency = currentTimeMillis - deliveryTimestampFromRemoteMillis;
+        if (0 > latency) {
+            LOGGER.debug("[Bug] latency is negative, latency={}ms, currentTimeMillis={}, "
+                + "deliveryTimestampFromRemoteMillis={}", latency, currentTimeMillis,
+                deliveryTimestampFromRemoteMillis);
+            return;
+        }
         final Optional<DoubleHistogram> optionalHistogram =
             clientMeterProvider.getHistogramByEnum(HistogramEnum.DELIVERY_LATENCY);
         if (!optionalHistogram.isPresent()) {