jtuglu-netflix commented on code in PR #17847:
URL: https://github.com/apache/druid/pull/17847#discussion_r2082579807


##########
server/src/main/java/org/apache/druid/segment/realtime/SegmentGenerationMetrics.java:
##########
@@ -52,9 +47,49 @@ public class SegmentGenerationMetrics
   private final AtomicLong messageMaxTimestamp = new AtomicLong(0);
   private final AtomicLong messageGap = new AtomicLong(0);
   private final AtomicBoolean processingDone = new AtomicBoolean(false);
-
   private final AtomicLong maxSegmentHandoffTime = new 
AtomicLong(NO_EMIT_SEGMENT_HANDOFF_TIME);
 
+  public static class MessageGapStats
+  {
+    long minMessageGap = Long.MAX_VALUE;
+    long maxMessageGap = Long.MIN_VALUE;
+    long numMessageGap = 0;
+    double totalMessageGap = 0;
+
+    public double avgMessageGap()
+    {
+      return totalMessageGap / numMessageGap;
+    }
+
+    public long getMinMessageGap()
+    {
+      return minMessageGap;
+    }
+
+    public long getMaxMessageGap()
+    {
+      return maxMessageGap;
+    }
+
+    public long getNumMessageGap()
+    {
+      return numMessageGap;
+    }
+
+    public MessageGapStats copyOf()
+    {
+      final MessageGapStats copy = new MessageGapStats();
+      copy.minMessageGap = minMessageGap;
+      copy.maxMessageGap = maxMessageGap;
+      copy.numMessageGap = numMessageGap;
+      copy.totalMessageGap = totalMessageGap;
+      return copy;
+    }
+  }
+
+  private final MessageGapStats messageGapStats = new MessageGapStats();
+  private final ReentrantLock lock = new ReentrantLock();

Review Comment:
   > Calls that access messageGapStats can be locked by using the internal 
object lock itself.
   
   Yeah, I tried this and `synchronized` was a lot slower compared to just 
using regular lock wrapper around the class. This approach was the cheapest out 
of all locking ones that I did. 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to