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

penghui pushed a commit to branch branch-2.9
in repository https://gitbox.apache.org/repos/asf/pulsar.git

commit 048154c7ec47c427f139fc71b8afaaef26b9f5bd
Author: litao <[email protected]>
AuthorDate: Thu Dec 23 22:08:20 2021 +0800

    [Producer] Change the time units from ns to ms (#13057)
    
    ### Motivation
    The time unit in this exception message is ns, which is not very readable. 
We can change it from ns to ms.
    ```
    org.apache.pulsar.client.api.PulsarClientException$TimeoutException:
    The producer xxx can not send message to the topic xxx within given timeout 
: createdAt 461913074 ns ago, firstSentAt 29545553038276935 ns ago, lastSentAt 
29545553038276935 ns ago, retryCount 0 at 
org.apache.pulsar.client.api.PulsarClientException.unwrap(PulsarClientException.java:916)
    at 
org.apache.pulsar.client.impl.TypedMessageBuilderImpl.send(TypedMessageBuilderImpl.java:93)
    at org.apache.pulsar.client.impl.ProducerBase.send(ProducerBase.java:63)
    at 
com.yum.boh.oh.service.impl.StoreOrderPostServiceImpl.generalProcessing(StoreOrderPostServiceImpl.java:272)
    at 
com.yum.boh.oh.service.impl.StoreOrderPostServiceImpl.saveThirdOrder(StoreOrderPostServiceImpl.java:72)
    at 
com.yum.boh.oh.controller.StoreOrderController.postOrderInfo$original$T8425mfx(StoreOrderController.java:39)
    at 
com.yum.boh.oh.controller.StoreOrderController.postOrderInfo$original$T8425mfx$accessor$vJljNzML(StoreOrderController.java)
    at 
com.yum.boh.oh.controller.StoreOrderController$auxiliary$nysalhgy.call(Unknown 
Source)
    at 
org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstMethodsInter.intercept(InstMethodsInter.java:86)
    ```
    
    ### Modifications
    Change the time units from ns to ms for ProducerImpl#OpSendMsg.
    
    (cherry picked from commit 891660e396ad2831ec2bc94b535fc5d0c9543ec7)
---
 .../java/org/apache/pulsar/client/impl/ProducerImpl.java     |  8 +++++---
 .../java/org/apache/pulsar/common/util/RelativeTimeUtil.java | 12 ++++++++++++
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git 
a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ProducerImpl.java 
b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ProducerImpl.java
index 5944c8f..abc771c 100644
--- 
a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ProducerImpl.java
+++ 
b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ProducerImpl.java
@@ -89,6 +89,7 @@ import org.apache.pulsar.common.schema.SchemaInfo;
 import org.apache.pulsar.common.schema.SchemaType;
 import org.apache.pulsar.common.util.DateFormatter;
 import org.apache.pulsar.common.util.FutureUtil;
+import org.apache.pulsar.common.util.RelativeTimeUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -1240,9 +1241,9 @@ public class ProducerImpl<T> extends ProducerBase<T> 
implements TimerTask, Conne
                     String errMsg = String.format(
                         "%s : createdAt %s ns ago, firstSentAt %s ns ago, 
lastSentAt %s ns ago, retryCount %s",
                         te.getMessage(),
-                        ns - this.createdAt,
-                        this.firstSentAt <= 0 ? ns - this.lastSentAt : ns - 
this.firstSentAt,
-                        ns - this.lastSentAt,
+                        RelativeTimeUtil.nsToSeconds(ns - this.createdAt),
+                        RelativeTimeUtil.nsToSeconds(this.firstSentAt <= 0 ? 
ns - this.lastSentAt : ns - this.firstSentAt),
+                        RelativeTimeUtil.nsToSeconds(ns - this.lastSentAt),
                         retryCount
                     );
 
@@ -1305,6 +1306,7 @@ public class ProducerImpl<T> extends ProducerBase<T> 
implements TimerTask, Conne
         };
     }
 
+
     /**
      * Queue implementation that is used as the pending messages queue.
      *
diff --git 
a/pulsar-common/src/main/java/org/apache/pulsar/common/util/RelativeTimeUtil.java
 
b/pulsar-common/src/main/java/org/apache/pulsar/common/util/RelativeTimeUtil.java
index 36e6adf..454cfda 100644
--- 
a/pulsar-common/src/main/java/org/apache/pulsar/common/util/RelativeTimeUtil.java
+++ 
b/pulsar-common/src/main/java/org/apache/pulsar/common/util/RelativeTimeUtil.java
@@ -18,6 +18,7 @@
  */
 package org.apache.pulsar.common.util;
 
+import java.math.BigDecimal;
 import java.util.concurrent.TimeUnit;
 import lombok.experimental.UtilityClass;
 
@@ -63,4 +64,15 @@ public class RelativeTimeUtil {
             throw new IllegalArgumentException("Invalid time unit '" + 
lastChar + "'");
         }
     }
+
+    /**
+     * Convert nanoseconds to seconds and keep three decimal places.
+     * @param ns
+     * @return seconds
+     */
+    public static double nsToSeconds(long ns) {
+        double seconds = (double) ns / 1_000_000_000;
+        BigDecimal bd = new BigDecimal(seconds);
+        return bd.setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
+    }
 }

Reply via email to