Uploaded image for project: 'Geode'
  1. Geode
  2. GEODE-6890

sentMessagesMaxTime stat calculation needs improvement

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 1.10.0
    • statistics
    • None

    Description

      The sentMessagesMaxTime stat is calculated by reading the old value. This read is an expensive synchronized operation.

      The following is a prototype fix that uses a local atomic:

      diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionStats.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionStats.java
      index d591e35570..0b5017b857 100644
      --- a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionStats.java
      +++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionStats.java
      @@ -1035,6 +1035,8 @@ public class DistributionStats implements DMStats {
           return this.stats.getLong(sentMessagesTimeId);
         }
       
      +  private final AtomicLong sentMessagesMaxTime = new AtomicLong();
      +
         /**
          * Increments the total number of nanoseconds spend sending messages.
          * <p>
      @@ -1045,8 +1047,17 @@ public class DistributionStats implements DMStats {
           if (enableClockStats) {
             this.stats.incLong(sentMessagesTimeId, nanos);
             long millis = nanos / 1000000;
      -      if (getSentMessagesMaxTime() < millis) {
      -        this.stats.setLong(sentMessagesMaxTimeId, millis);
      +      boolean done = false;
      +      while (!done) {
      +        long currentSentMessagesMaxTime = sentMessagesMaxTime.get();
      +        if (millis > currentSentMessagesMaxTime) {
      +          done = sentMessagesMaxTime.compareAndSet(currentSentMessagesMaxTime, millis);
      +          if (done) {
      +            stats.setLong(sentMessagesMaxTimeId, millis);
      +          }
      +        } else {
      +          done = true;
      +        }
             }
           }
         }
      

      Attachments

        Activity

          People

            mboxwala Murtuza Boxwala
            dschneider Darrel Schneider
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: