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

liubao pushed a commit to branch 2.8.x
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git


The following commit(s) were added to refs/heads/2.8.x by this push:
     new e39c33040 [#4515]fix access log not correct when guard timeout (#4526)
e39c33040 is described below

commit e39c330407f53de4cf552fde754a3743348142a4
Author: liubao68 <[email protected]>
AuthorDate: Sat Sep 14 18:23:45 2024 +0800

    [#4515]fix access log not correct when guard timeout (#4526)
---
 .../core/element/impl/DurationMillisecondAccessItem.java      | 11 +++++++++--
 .../accessLog/core/element/impl/DurationSecondAccessItem.java | 11 +++++++++--
 .../core/element/impl/DurationMillisecondItemTest.java        |  7 +++++++
 3 files changed, 25 insertions(+), 4 deletions(-)

diff --git 
a/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationMillisecondAccessItem.java
 
b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationMillisecondAccessItem.java
index e0bde4ad3..9d5703120 100644
--- 
a/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationMillisecondAccessItem.java
+++ 
b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationMillisecondAccessItem.java
@@ -26,12 +26,19 @@ import io.vertx.ext.web.RoutingContext;
 public class DurationMillisecondAccessItem implements 
AccessLogItem<RoutingContext> {
   @Override
   public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, 
StringBuilder builder) {
-    builder.append(accessLogEvent.getMilliEndTime() - 
accessLogEvent.getMilliStartTime());
+    builder.append(calc(accessLogEvent.getMilliEndTime(), 
accessLogEvent.getMilliStartTime()));
   }
 
   @Override
   public void appendClientFormattedItem(InvocationFinishEvent finishEvent, 
StringBuilder builder) {
-    
builder.append((finishEvent.getInvocation().getInvocationStageTrace().getFinish()
 -
+    
builder.append(calc(finishEvent.getInvocation().getInvocationStageTrace().getFinish(),
         finishEvent.getInvocation().getInvocationStageTrace().getStartSend()) 
/ 1000_000);
   }
+
+  private long calc(long end, long begin) {
+    if (begin == 0 || end == 0) {
+      return 0;
+    }
+    return end - begin;
+  }
 }
diff --git 
a/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationSecondAccessItem.java
 
b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationSecondAccessItem.java
index 2da34026d..9dcd015fc 100644
--- 
a/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationSecondAccessItem.java
+++ 
b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationSecondAccessItem.java
@@ -28,12 +28,19 @@ public class DurationSecondAccessItem implements 
AccessLogItem<RoutingContext> {
 
   @Override
   public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, 
StringBuilder builder) {
-    builder.append((accessLogEvent.getMilliEndTime() - 
accessLogEvent.getMilliStartTime()) / 1000);
+    builder.append(calc(accessLogEvent.getMilliEndTime(), 
accessLogEvent.getMilliStartTime()) / 1000);
   }
 
   @Override
   public void appendClientFormattedItem(InvocationFinishEvent finishEvent, 
StringBuilder builder) {
-    
builder.append((finishEvent.getInvocation().getInvocationStageTrace().getFinish()
 -
+    
builder.append(calc(finishEvent.getInvocation().getInvocationStageTrace().getFinish(),
         finishEvent.getInvocation().getInvocationStageTrace().getStartSend()) 
/ 1000_000_000);
   }
+
+  private long calc(long end, long begin) {
+    if (begin == 0 || end == 0) {
+      return 0;
+    }
+    return end - begin;
+  }
 }
diff --git 
a/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationMillisecondItemTest.java
 
b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationMillisecondItemTest.java
index 7ad32b23f..c97afc41d 100644
--- 
a/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationMillisecondItemTest.java
+++ 
b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationMillisecondItemTest.java
@@ -64,6 +64,13 @@ public class DurationMillisecondItemTest {
     ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
     Assertions.assertEquals("1", strBuilder.toString());
 
+    strBuilder = new StringBuilder();
+    ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
+    Assertions.assertEquals("0", strBuilder.toString());
+
+    when(invocationStageTrace.getStartSend()).thenReturn(1000L);
+    when(invocationStageTrace.getFinish()).thenReturn(1001_000L);
+
     strBuilder = new StringBuilder();
     ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
     Assertions.assertEquals("1", strBuilder.toString());

Reply via email to