You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2015/04/21 13:31:01 UTC

incubator-tinkerpop git commit: Add more use of voidPromise to reduce object creation in Gremlin Server.

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/master 8df91fcf4 -> e48fb044a


Add more use of voidPromise to reduce object creation in Gremlin Server.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/e48fb044
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/e48fb044
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/e48fb044

Branch: refs/heads/master
Commit: e48fb044ae3db8cf2c9f0473bea0f938b3501829
Parents: 8df91fc
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Apr 21 07:30:39 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Apr 21 07:30:39 2015 -0400

----------------------------------------------------------------------
 .../gremlin/server/op/AbstractEvalOpProcessor.java     |  8 ++++----
 .../gremlin/server/op/control/ControlOps.java          | 13 +++++++++----
 2 files changed, 13 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e48fb044/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractEvalOpProcessor.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractEvalOpProcessor.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractEvalOpProcessor.java
index 9b55c4a..61b149b 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractEvalOpProcessor.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractEvalOpProcessor.java
@@ -146,7 +146,7 @@ public abstract class AbstractEvalOpProcessor implements OpProcessor {
         evalFuture.handle((v, t) -> timerContext.stop());
         evalFuture.exceptionally(se -> {
             logger.warn(String.format("Exception processing a script on request [%s].", msg), se);
-            ctx.writeAndFlush(ResponseMessage.build(msg).code(ResponseStatusCode.SERVER_ERROR_SCRIPT_EVALUATION).statusMessage(se.getMessage()).create());
+            ctx.writeAndFlush(ResponseMessage.build(msg).code(ResponseStatusCode.SERVER_ERROR_SCRIPT_EVALUATION).statusMessage(se.getMessage()).create(), ctx.voidPromise());
             return null;
         });
 
@@ -172,12 +172,12 @@ public abstract class AbstractEvalOpProcessor implements OpProcessor {
                 if (ExceptionUtils.getRootCause(ex).getClass().equals(TimeoutException.class)) {
                     final String errorMessage = String.format("Response iteration and serialization exceeded the configured threshold for request [%s] - %s", msg, ex.getCause().getMessage());
                     logger.warn(errorMessage);
-                    ctx.writeAndFlush(ResponseMessage.build(msg).code(ResponseStatusCode.SERVER_ERROR_TIMEOUT).statusMessage(errorMessage).create());
+                    ctx.writeAndFlush(ResponseMessage.build(msg).code(ResponseStatusCode.SERVER_ERROR_TIMEOUT).statusMessage(errorMessage).create(), ctx.voidPromise());
                 }
             } else {
                 // since this is not an error we need to terminate.  termination for errors is handled in the
                 // ResponseEncoder
-                ctx.writeAndFlush(ResponseMessage.build(msg).code(ResponseStatusCode.SUCCESS_TERMINATOR).create());
+                ctx.writeAndFlush(ResponseMessage.build(msg).code(ResponseStatusCode.SUCCESS_TERMINATOR).create(), ctx.voidPromise());
             }
             return null;
         }, executor);
@@ -213,7 +213,7 @@ public abstract class AbstractEvalOpProcessor implements OpProcessor {
             if (aggregate.size() == resultIterationBatchSize || !itty.hasNext()) {
                 ctx.writeAndFlush(ResponseMessage.build(msg)
                         .code(ResponseStatusCode.SUCCESS)
-                        .result(aggregate).create());
+                        .result(aggregate).create(), ctx.voidPromise());
                 aggregate = new ArrayList<>(resultIterationBatchSize);
             }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e48fb044/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/control/ControlOps.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/control/ControlOps.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/control/ControlOps.java
index d015861..372564e 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/control/ControlOps.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/control/ControlOps.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.server.op.control;
 
+import io.netty.channel.ChannelHandlerContext;
 import org.apache.tinkerpop.gremlin.driver.Tokens;
 import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
 import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
@@ -41,8 +42,9 @@ class ControlOps {
     private static final Logger logger = LoggerFactory.getLogger(ControlOps.class);
 
     public static void versionOp(final Context context) {
+        final ChannelHandlerContext ctx = context.getChannelHandlerContext();
         final RequestMessage msg = context.getRequestMessage();
-        context.getChannelHandlerContext().writeAndFlush(ResponseMessage.build(msg).code(ResponseStatusCode.SUCCESS).result(Gremlin.version()));
+        context.getChannelHandlerContext().writeAndFlush(ResponseMessage.build(msg).code(ResponseStatusCode.SUCCESS).result(Gremlin.version()), ctx.voidPromise());
     }
 
     /**
@@ -58,6 +60,7 @@ class ControlOps {
      * List the dependencies, imports, or variables in the {@code ScriptEngine}.
      */
     public static void showOp(final Context context) {
+        final ChannelHandlerContext ctx = context.getChannelHandlerContext();
         final RequestMessage msg = context.getRequestMessage();
         final String infoType = msg.<String>optionalArgs(Tokens.ARGS_INFO_TYPE).get();
         final GremlinExecutor executor = context.getGremlinExecutor();
@@ -75,7 +78,7 @@ class ControlOps {
         }
 
         try {
-            context.getChannelHandlerContext().writeAndFlush(ResponseMessage.build(msg).code(ResponseStatusCode.SUCCESS).result(infoToShow).create());
+            context.getChannelHandlerContext().writeAndFlush(ResponseMessage.build(msg).code(ResponseStatusCode.SUCCESS).result(infoToShow).create(), ctx.voidPromise());
         } catch (Exception ex) {
             logger.warn("The result [{}] in the request {} could not be serialized and returned.",
                     infoToShow, context.getRequestMessage(), ex);
@@ -86,15 +89,17 @@ class ControlOps {
      * Resets the {@code ScriptEngine} thus forcing a reload of scripts and classes.
      */
     public static void resetOp(final Context context) {
+        final ChannelHandlerContext ctx = context.getChannelHandlerContext();
         final RequestMessage msg = context.getRequestMessage();
         context.getGremlinExecutor().getScriptEngines().reset();
-        context.getChannelHandlerContext().writeAndFlush(ResponseMessage.build(msg).code(ResponseStatusCode.SUCCESS).create());
+        context.getChannelHandlerContext().writeAndFlush(ResponseMessage.build(msg).code(ResponseStatusCode.SUCCESS).create(), ctx.voidPromise());
     }
 
     /**
      * Pull in maven based dependencies and load Gremlin plugins.
      */
     public static void useOp(final Context context) {
+        final ChannelHandlerContext ctx = context.getChannelHandlerContext();
         final RequestMessage msg = context.getRequestMessage();
         final List<Map<String, String>> usings = (List<Map<String, String>>) msg.getArgs().get(Tokens.ARGS_COORDINATES);
         usings.forEach(c -> {
@@ -110,7 +115,7 @@ class ControlOps {
                 put("version", version);
             }};
 
-            context.getChannelHandlerContext().write(ResponseMessage.build(msg).code(ResponseStatusCode.SUCCESS).result(coords).create());
+            context.getChannelHandlerContext().writeAndFlush(ResponseMessage.build(msg).code(ResponseStatusCode.SUCCESS).result(coords).create(), ctx.voidPromise());
         });
     }
 }