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

boglesby pushed a commit to branch support/1.12
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/support/1.12 by this push:
     new 16ecb01  GEODE-9372: Added createSenderTime and createSenderInProgress 
stats (#6608)
16ecb01 is described below

commit 16ecb0121d98723a19dcb8d082ec1c41fcaf2f85
Author: Barry Oglesby <bogle...@users.noreply.github.com>
AuthorDate: Mon Jun 14 08:30:44 2021 -1000

    GEODE-9372: Added createSenderTime and createSenderInProgress stats (#6608)
    
    (cherry picked from commit f0e6e0d9c2b299e31fd20dea47703b019fc66f31)
    (cherry picked from commit 5644b85c65e136d65cfe92f8dd3888a148cd925c)
    (cherry picked from commit aa106eee0d33767d57279855873d592b73b19fc7)
---
 .../apache/geode/distributed/internal/DMStats.java |  3 ++-
 .../distributed/internal/DistributionStats.java    | 23 +++++++++++++++++++++-
 .../internal/LonerDistributionManager.java         |  7 ++++++-
 .../apache/geode/internal/tcp/ConnectionTable.java |  6 ++++--
 .../internal/DistributionStatsTest.java            | 16 ++++++++++++---
 5 files changed, 47 insertions(+), 8 deletions(-)

diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/DMStats.java 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/DMStats.java
index 0f880b2..a2c9532 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/DMStats.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/DMStats.java
@@ -263,7 +263,7 @@ public interface DMStats extends MembershipStatistics {
   /**
    * @since GemFire 4.1
    */
-  void incSenders(boolean shared, boolean preserveOrder);
+  void incSenders(boolean shared, boolean preserveOrder, long start);
 
   /**
    * @since GemFire 4.1
@@ -560,4 +560,5 @@ public interface DMStats extends MembershipStatistics {
 
   long getUdpFinalCheckResponsesReceived();
 
+  long startSenderCreate();
 }
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 b08a512..e4fdaf55 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
@@ -112,6 +112,8 @@ public class DistributionStats implements DMStats {
   private static final int sharedUnorderedSenderConnectionsId;
   private static final int threadOrderedSenderConnectionsId;
   private static final int threadUnorderedSenderConnectionsId;
+  static final int senderCreateTimeId;
+  static final int senderCreatesInProgressId;
 
   private static final int syncSocketWritesInProgressId;
   private static final int syncSocketWriteTimeId;
@@ -443,6 +445,11 @@ public class DistributionStats implements DMStats {
     final String udpFinalCheckResponsesReceivedDesc =
         "UDP final check responses that this member has received.";
 
+    final String senderCreatesDesc =
+        "Total amount of time, in nanoseconds, spent creating a sender.";
+    final String senderCreatesInProgressDesc =
+        "Current number of sender creations in progress.";
+
     StatisticsTypeFactory f = StatisticsTypeFactoryImpl.singleton();
 
     type = f.createType(statName, statDescription, new StatisticDescriptor[] {
@@ -515,6 +522,8 @@ public class DistributionStats implements DMStats {
         f.createIntCounter("failedConnects", failedConnectsDesc, "connects"),
         f.createIntCounter("reconnectAttempts", reconnectAttemptsDesc, 
"connects"),
         f.createIntCounter("senderTimeouts", lostConnectionLeaseDesc, 
"expirations"),
+        f.createLongCounter("senderCreateTime", senderCreatesDesc, 
"nanoseconds"),
+        f.createLongGauge("senderCreatesInProgress", 
senderCreatesInProgressDesc, "operations"),
 
         f.createIntGauge("syncSocketWritesInProgress",
             "Current number of synchronous/blocking socket write calls in 
progress.", "writes"),
@@ -796,6 +805,8 @@ public class DistributionStats implements DMStats {
     sharedUnorderedSenderConnectionsId = type.nameToId("sendersSU");
     threadOrderedSenderConnectionsId = type.nameToId("sendersTO");
     threadUnorderedSenderConnectionsId = type.nameToId("sendersTU");
+    senderCreateTimeId = type.nameToId("senderCreateTime");
+    senderCreatesInProgressId = type.nameToId("senderCreatesInProgress");
 
     syncSocketWritesInProgressId = type.nameToId("syncSocketWritesInProgress");
     syncSocketWriteTimeId = type.nameToId("syncSocketWriteTime");
@@ -1658,7 +1669,13 @@ public class DistributionStats implements DMStats {
   }
 
   @Override
-  public void incSenders(boolean shared, boolean preserveOrder) {
+  public long startSenderCreate() {
+    stats.incLong(senderCreatesInProgressId, 1);
+    return getTime();
+  }
+
+  @Override
+  public void incSenders(boolean shared, boolean preserveOrder, long start) {
     if (shared) {
       if (preserveOrder) {
         stats.incInt(sharedOrderedSenderConnectionsId, 1);
@@ -1672,6 +1689,10 @@ public class DistributionStats implements DMStats {
         stats.incInt(threadUnorderedSenderConnectionsId, 1);
       }
     }
+    if (enableClockStats) {
+      stats.incLong(senderCreateTimeId, getTime() - start);
+    }
+    stats.incLong(senderCreatesInProgressId, -1);
   }
 
   @Override
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/LonerDistributionManager.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/LonerDistributionManager.java
index 5857f4e..4c94890 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/LonerDistributionManager.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/LonerDistributionManager.java
@@ -539,7 +539,12 @@ public class LonerDistributionManager implements 
DistributionManager {
     public void incLostLease() {}
 
     @Override
-    public void incSenders(boolean shared, boolean preserveOrder) {}
+    public long startSenderCreate() {
+      return 0L;
+    }
+
+    @Override
+    public void incSenders(boolean shared, boolean preserveOrder, long start) 
{}
 
     @Override
     public void decSenders(boolean shared, boolean preserveOrder) {}
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java 
b/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java
index 1b2a66f..c2d03ec 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java
@@ -282,9 +282,10 @@ public class ConnectionTable {
     // handle new pending connection
     Connection con = null;
     try {
+      long senderCreateStartTime = owner.getStats().startSenderCreate();
       con = Connection.createSender(owner.getMembership(), this, 
preserveOrder, id,
           sharedResource, startTime, ackThreshold, ackSAThreshold);
-      owner.getStats().incSenders(sharedResource, preserveOrder);
+      owner.getStats().incSenders(sharedResource, preserveOrder, 
senderCreateStartTime);
     } finally {
       // our connection failed to notify anyone waiting for our pending con
       if (con == null) {
@@ -447,12 +448,13 @@ public class ConnectionTable {
     }
 
     // OK, we have to create a new connection.
+    long senderCreateStartTime = owner.getStats().startSenderCreate();
     result = Connection.createSender(owner.getMembership(), this, true, id, 
false, startTime,
         ackTimeout, ackSATimeout);
+    owner.getStats().incSenders(false, true, senderCreateStartTime);
     if (logger.isDebugEnabled()) {
       logger.debug("ConnectionTable: created an ordered connection: {}", 
result);
     }
-    owner.getStats().incSenders(false, true);
 
     // Update the list of connections owned by this thread....
 
diff --git 
a/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionStatsTest.java
 
b/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionStatsTest.java
index e47516d..0d7acee 100644
--- 
a/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionStatsTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionStatsTest.java
@@ -15,6 +15,7 @@
 package org.apache.geode.distributed.internal;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.anyLong;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
@@ -22,7 +23,6 @@ import static org.mockito.Mockito.verify;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
-import org.mockito.Mockito;
 
 import org.apache.geode.Statistics;
 
@@ -47,8 +47,8 @@ public class DistributionStatsTest {
   public void endReplyWait() {
     distributionStats.endReplyWait(12000000, 12);
 
-    verify(mockStats).incLong(eq(DistributionStats.replyWaitTimeId), 
Mockito.anyLong());
-    verify(mockStats).incLong(eq(DistributionStats.replyWaitMaxTimeId), 
Mockito.anyLong());
+    verify(mockStats).incLong(eq(DistributionStats.replyWaitTimeId), 
anyLong());
+    verify(mockStats).incLong(eq(DistributionStats.replyWaitMaxTimeId), 
anyLong());
   }
 
   @Test
@@ -67,4 +67,14 @@ public class DistributionStatsTest {
     verify(mockStats).incInt(DistributionStats.serialQueueBytesId, 50000000);
     verify(mockStats).incInt(DistributionStats.serialQueueBytesId, 20000000);
   }
+
+  @Test
+  public void startSenderCreate() {
+    long startTime = distributionStats.startSenderCreate();
+    verify(mockStats).incLong(DistributionStats.senderCreatesInProgressId, 1);
+    assertThat(startTime).isNotEqualTo(0);
+    distributionStats.incSenders(false, true, startTime);
+    verify(mockStats).incLong(DistributionStats.senderCreatesInProgressId, -1);
+    verify(mockStats).incLong(eq(DistributionStats.senderCreateTimeId), 
anyLong());
+  }
 }

Reply via email to