You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by bs...@apache.org on 2018/01/16 23:19:15 UTC

[geode] branch develop updated (e662639 -> c31a0f8)

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

bschuchardt pushed a change to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git.


    from e662639  GEODE-4227: applying spotless
     new 13364a3  GEODE-4290 add operation time statistics to the protobuf server
     new c31a0f8  GEODE-4296 Protobuf driver should turn off TCP delay, or make it configurable

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../internal/protocol/statistics/NoOpStatistics.java     | 10 ++++++++++
 .../protocol/statistics/ProtocolClientStatistics.java    | 12 ++++++++++++
 .../apache/geode/experimental/driver/ProtobufDriver.java |  3 +++
 .../statistics/ProtobufClientStatisticsImpl.java         | 16 +++++++++++++++-
 .../v1/operations/GetAllRequestOperationHandler.java     |  2 ++
 .../v1/operations/GetRequestOperationHandler.java        |  2 ++
 .../v1/operations/PutAllRequestOperationHandler.java     |  2 ++
 .../v1/operations/PutRequestOperationHandler.java        |  3 +++
 .../v1/operations/RemoveRequestOperationHandler.java     |  3 +++
 9 files changed, 52 insertions(+), 1 deletion(-)

-- 
To stop receiving notification emails like this one, please contact
['"commits@geode.apache.org" <co...@geode.apache.org>'].

[geode] 01/02: GEODE-4290 add operation time statistics to the protobuf server

Posted by bs...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bschuchardt pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git

commit 13364a301b495d42c02a9ce5b38484a3c6f83366
Author: Bruce Schuchardt <bs...@pivotal.io>
AuthorDate: Tue Jan 16 12:42:45 2018 -0800

    GEODE-4290 add operation time statistics to the protobuf server
    
    Time spent processing operations is now captured using System.nanoTime().
---
 .../internal/protocol/statistics/NoOpStatistics.java     | 10 ++++++++++
 .../protocol/statistics/ProtocolClientStatistics.java    | 12 ++++++++++++
 .../statistics/ProtobufClientStatisticsImpl.java         | 16 +++++++++++++++-
 .../v1/operations/GetAllRequestOperationHandler.java     |  2 ++
 .../v1/operations/GetRequestOperationHandler.java        |  2 ++
 .../v1/operations/PutAllRequestOperationHandler.java     |  2 ++
 .../v1/operations/PutRequestOperationHandler.java        |  3 +++
 .../v1/operations/RemoveRequestOperationHandler.java     |  3 +++
 8 files changed, 49 insertions(+), 1 deletion(-)

diff --git a/geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/statistics/NoOpStatistics.java b/geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/statistics/NoOpStatistics.java
index 8bacd32..88cd89b 100644
--- a/geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/statistics/NoOpStatistics.java
+++ b/geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/statistics/NoOpStatistics.java
@@ -44,4 +44,14 @@ public class NoOpStatistics implements ProtocolClientStatistics {
   public void incAuthenticationFailures() {
 
   }
+
+  @Override
+  public long startOperation() {
+    return 0;
+  }
+
+  @Override
+  public void endOperation(long startOperationTime) {
+
+  }
 }
diff --git a/geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/statistics/ProtocolClientStatistics.java b/geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/statistics/ProtocolClientStatistics.java
index 9b6ca63..bf8359a 100644
--- a/geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/statistics/ProtocolClientStatistics.java
+++ b/geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/statistics/ProtocolClientStatistics.java
@@ -30,4 +30,16 @@ public interface ProtocolClientStatistics {
   void incAuthorizationViolations();
 
   void incAuthenticationFailures();
+
+  /**
+   * Invoke this at the start of an operation and then invoke endOperation in a finally block
+   */
+  long startOperation();
+
+  /**
+   * record the end of an operation. The parameter value should be from startOperation and
+   * endOperation must be invoked in the same thread as startOperation because we're using
+   * System.nanoTime()
+   */
+  void endOperation(long startOperationTime);
 }
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/statistics/ProtobufClientStatisticsImpl.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/statistics/ProtobufClientStatisticsImpl.java
index 7b40c88..58bcccb 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/statistics/ProtobufClientStatisticsImpl.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/statistics/ProtobufClientStatisticsImpl.java
@@ -35,6 +35,7 @@ public class ProtobufClientStatisticsImpl implements ProtocolClientStatistics {
   private final int messagesSentId;
   private final int authorizationViolationsId;
   private final int authenticationFailuresId;
+  private final int operationTimeId;
 
   public ProtobufClientStatisticsImpl(StatisticsFactory statisticsFactory, String statisticsName) {
     if (statisticsFactory == null) {
@@ -58,7 +59,9 @@ public class ProtobufClientStatisticsImpl implements ProtocolClientStatistics {
         statisticsFactory.createLongCounter("messagesReceived", "Messages received from clients.",
             "messages"),
         statisticsFactory.createLongCounter("messagesSent", "Messages sent to clients.",
-            "messages")};
+            "messages"),
+        statisticsFactory.createLongCounter("operationTime", "Time spent performing operations",
+            "nanoseconds")};
     statType = statisticsFactory.createType(getStatsName(), "Protobuf client/server statistics",
         serverStatDescriptors);
     this.stats = statisticsFactory.createAtomicStatistics(statType, statisticsName);
@@ -71,6 +74,7 @@ public class ProtobufClientStatisticsImpl implements ProtocolClientStatistics {
     bytesSentId = this.stats.nameToId("bytesSent");
     messagesReceivedId = this.stats.nameToId("messagesReceived");
     messagesSentId = this.stats.nameToId("messagesSent");
+    operationTimeId = this.stats.nameToId("operationTime");
   }
 
 
@@ -112,4 +116,14 @@ public class ProtobufClientStatisticsImpl implements ProtocolClientStatistics {
   public void incAuthenticationFailures() {
     stats.incLong(authenticationFailuresId, 1);
   }
+
+  @Override
+  public long startOperation() {
+    return System.nanoTime();
+  }
+
+  @Override
+  public void endOperation(long startOperationTime) {
+    stats.incLong(operationTimeId, System.nanoTime() - startOperationTime);
+  }
 }
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/GetAllRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/GetAllRequestOperationHandler.java
index d000dea..e2d38bd 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/GetAllRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/GetAllRequestOperationHandler.java
@@ -59,6 +59,7 @@ public class GetAllRequestOperationHandler
           .of(ProtobufResponseUtilities.makeErrorResponse(SERVER_ERROR, "Region not found"));
     }
 
+    long startTime = messageExecutionContext.getStatistics().startOperation();
     Map<Boolean, List<Object>> resultsCollection;
     try {
       ((InternalCache) messageExecutionContext.getCache()).setReadSerializedForCurrentThread(true);
@@ -68,6 +69,7 @@ public class GetAllRequestOperationHandler
           .collect(Collectors.partitioningBy(x -> x instanceof BasicTypes.Entry));
     } finally {
       ((InternalCache) messageExecutionContext.getCache()).setReadSerializedForCurrentThread(false);
+      messageExecutionContext.getStatistics().endOperation(startTime);
     }
     RegionAPI.GetAllResponse.Builder responseBuilder = RegionAPI.GetAllResponse.newBuilder();
 
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/GetRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/GetRequestOperationHandler.java
index 254148e..3016d72 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/GetRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/GetRequestOperationHandler.java
@@ -52,6 +52,7 @@ public class GetRequestOperationHandler
       return Failure
           .of(ProtobufResponseUtilities.makeErrorResponse(SERVER_ERROR, "Region not found"));
     }
+    long startOperationTime = messageExecutionContext.getStatistics().startOperation();
 
     try {
       ((InternalCache) messageExecutionContext.getCache()).setReadSerializedForCurrentThread(true);
@@ -71,6 +72,7 @@ public class GetRequestOperationHandler
           ProtobufResponseUtilities.makeErrorResponse(INVALID_REQUEST, "Encoding not supported."));
     } finally {
       ((InternalCache) messageExecutionContext.getCache()).setReadSerializedForCurrentThread(false);
+      messageExecutionContext.getStatistics().endOperation(startOperationTime);
     }
   }
 }
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/PutAllRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/PutAllRequestOperationHandler.java
index b93f815..353f0e6 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/PutAllRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/PutAllRequestOperationHandler.java
@@ -59,10 +59,12 @@ public class PutAllRequestOperationHandler
           "Region passed does not exist: " + regionName));
     }
 
+    long startTime = messageExecutionContext.getStatistics().startOperation();
     RegionAPI.PutAllResponse.Builder builder = RegionAPI.PutAllResponse.newBuilder()
         .addAllFailedKeys(putAllRequest.getEntryList().stream()
             .map((entry) -> singlePut(serializationService, region, entry)).filter(Objects::nonNull)
             .collect(Collectors.toList()));
+    messageExecutionContext.getStatistics().endOperation(startTime);
     return Success.of(builder.build());
   }
 
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/PutRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/PutRequestOperationHandler.java
index 60a8d7b..dd06fad 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/PutRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/PutRequestOperationHandler.java
@@ -52,6 +52,7 @@ public class PutRequestOperationHandler
           "Region passed by client did not exist: " + regionName));
     }
 
+    long startTime = messageExecutionContext.getStatistics().startOperation();
     try {
       BasicTypes.Entry entry = request.getEntry();
 
@@ -68,6 +69,8 @@ public class PutRequestOperationHandler
       logger.error("Got error when decoding Put request: {}", ex);
       return Failure
           .of(ProtobufResponseUtilities.makeErrorResponse(INVALID_REQUEST, ex.toString()));
+    } finally {
+      messageExecutionContext.getStatistics().endOperation(startTime);
     }
   }
 }
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/RemoveRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/RemoveRequestOperationHandler.java
index 6b345ba..d3b6e59 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/RemoveRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/RemoveRequestOperationHandler.java
@@ -52,6 +52,7 @@ public class RemoveRequestOperationHandler
           .of(ProtobufResponseUtilities.makeErrorResponse(SERVER_ERROR, "Region not found"));
     }
 
+    long startTime = messageExecutionContext.getStatistics().startOperation();
     try {
       Object decodedKey = serializationService.decode(request.getKey());
       region.remove(decodedKey);
@@ -62,6 +63,8 @@ public class RemoveRequestOperationHandler
       logger.error("Received Remove request with unsupported encoding: {}", ex);
       return Failure.of(ProtobufResponseUtilities.makeErrorResponse(INVALID_REQUEST,
           "Encoding not supported: " + ex.getMessage()));
+    } finally {
+      messageExecutionContext.getStatistics().endOperation(startTime);
     }
   }
 }

-- 
To stop receiving notification emails like this one, please contact
"commits@geode.apache.org" <co...@geode.apache.org>.

[geode] 02/02: GEODE-4296 Protobuf driver should turn off TCP delay, or make it configurable

Posted by bs...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bschuchardt pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git

commit c31a0f8aa17e26180eb8a0655666a18c972665ab
Author: Bruce Schuchardt <bs...@pivotal.io>
AuthorDate: Tue Jan 16 11:17:22 2018 -0800

    GEODE-4296 Protobuf driver should turn off TCP delay, or make it configurable
    
    Turning off tcp-delay and setting socket buffer size to something reasonable.
---
 .../main/java/org/apache/geode/experimental/driver/ProtobufDriver.java | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/geode-experimental-driver/src/main/java/org/apache/geode/experimental/driver/ProtobufDriver.java b/geode-experimental-driver/src/main/java/org/apache/geode/experimental/driver/ProtobufDriver.java
index 57fa2a5..5f5185f 100644
--- a/geode-experimental-driver/src/main/java/org/apache/geode/experimental/driver/ProtobufDriver.java
+++ b/geode-experimental-driver/src/main/java/org/apache/geode/experimental/driver/ProtobufDriver.java
@@ -60,6 +60,9 @@ public class ProtobufDriver implements Driver {
     this.locators = locators;
     InetSocketAddress server = findAServer();
     socket = new Socket(server.getAddress(), server.getPort());
+    socket.setTcpNoDelay(true);
+    socket.setSendBufferSize(65535);
+    socket.setReceiveBufferSize(65535);
 
     final OutputStream outputStream = socket.getOutputStream();
     ProtocolVersion.NewConnectionClientVersion.newBuilder()

-- 
To stop receiving notification emails like this one, please contact
"commits@geode.apache.org" <co...@geode.apache.org>.