This is an automated email from the ASF dual-hosted git repository.
boglesby pushed a commit to branch support/1.13
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/support/1.13 by this push:
new aa106ee GEODE-9372: Added createSenderTime and createSenderInProgress
stats (#6608)
aa106ee is described below
commit aa106eee0d33767d57279855873d592b73b19fc7
Author: Barry Oglesby <[email protected]>
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)
---
.../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 114a0e1..0011046 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
@@ -536,7 +536,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 bca4480..23279fa 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
@@ -275,9 +275,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) {
@@ -440,12 +441,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());
+ }
}