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 <[email protected]>
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()) {

Reply via email to