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/20 15:56:27 UTC

incubator-tinkerpop git commit: Reduce object creation in Gremlin Server by using voidPromise.

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/master d3a04e46e -> 107e26500


Reduce object creation in Gremlin Server by using voidPromise.


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

Branch: refs/heads/master
Commit: 107e26500c91caf2172bd54817cd506b58821edc
Parents: d3a04e4
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Apr 20 09:56:08 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Apr 20 09:56:08 2015 -0400

----------------------------------------------------------------------
 .../handler/HttpGremlinEndpointHandler.java     |  4 ++--
 .../gremlin/server/handler/IteratorHandler.java |  6 +++---
 .../handler/NioGremlinResponseEncoder.java      | 20 +++++++++---------
 .../server/handler/OpExecutorHandler.java       |  6 +++---
 .../server/handler/OpSelectorHandler.java       |  6 +++---
 .../handler/WsGremlinResponseEncoder.java       | 22 ++++++++++----------
 6 files changed, 32 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/107e2650/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpGremlinEndpointHandler.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpGremlinEndpointHandler.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpGremlinEndpointHandler.java
index 67e81c2..3d6368b 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpGremlinEndpointHandler.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpGremlinEndpointHandler.java
@@ -113,7 +113,7 @@ public class HttpGremlinEndpointHandler extends ChannelInboundHandlerAdapter {
             final FullHttpRequest req = (FullHttpRequest) msg;
 
             if (is100ContinueExpected(req)) {
-                ctx.write(new DefaultFullHttpResponse(HTTP_1_1, CONTINUE));
+                ctx.write(new DefaultFullHttpResponse(HTTP_1_1, CONTINUE), ctx.voidPromise());
             }
 
             if (req.getMethod() != GET && req.getMethod() != POST) {
@@ -168,7 +168,7 @@ public class HttpGremlinEndpointHandler extends ChannelInboundHandlerAdapter {
                             ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE);
                         } else {
                             response.headers().set(CONNECTION, HttpHeaders.Values.KEEP_ALIVE);
-                            ctx.writeAndFlush(response);
+                            ctx.writeAndFlush(response, ctx.voidPromise());
                         }
                     }
                 });

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/107e2650/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/IteratorHandler.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/IteratorHandler.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/IteratorHandler.java
index cdb7975..b957bae 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/IteratorHandler.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/IteratorHandler.java
@@ -87,7 +87,7 @@ public class IteratorHandler extends ChannelOutboundHandlerAdapter {
                         if (aggregate.size() == resultIterationBatchSize || !itty.hasNext()) {
                             ctx.writeAndFlush(ResponseMessage.build(requestMessage)
                                     .code(ResponseStatusCode.SUCCESS)
-                                    .result(aggregate).create());
+                                    .result(aggregate).create(), ctx.voidPromise());
                             aggregate = new ArrayList<>(resultIterationBatchSize);
                         }
 
@@ -107,10 +107,10 @@ public class IteratorHandler extends ChannelOutboundHandlerAdapter {
                     if (!f.isSuccess()) {
                         final String errorMessage = String.format("Response iteration and serialization exceeded the configured threshold for request [%s] - %s", msg, f.cause().getMessage());
                         logger.warn(errorMessage);
-                        ctx.writeAndFlush(ResponseMessage.build(requestMessage).code(ResponseStatusCode.SERVER_ERROR_TIMEOUT).statusMessage(errorMessage).create());
+                        ctx.writeAndFlush(ResponseMessage.build(requestMessage).code(ResponseStatusCode.SERVER_ERROR_TIMEOUT).statusMessage(errorMessage).create(), ctx.voidPromise());
                     }
 
-                    ctx.writeAndFlush(ResponseMessage.build(requestMessage).code(ResponseStatusCode.SUCCESS_TERMINATOR).create());
+                    ctx.writeAndFlush(ResponseMessage.build(requestMessage).code(ResponseStatusCode.SUCCESS_TERMINATOR).create(), ctx.voidPromise());
                 });
             } finally {
                 ReferenceCountUtil.release(msg);

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/107e2650/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/NioGremlinResponseEncoder.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/NioGremlinResponseEncoder.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/NioGremlinResponseEncoder.java
index 9670216..0e6a9c0 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/NioGremlinResponseEncoder.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/NioGremlinResponseEncoder.java
@@ -46,18 +46,18 @@ public class NioGremlinResponseEncoder extends MessageToByteEncoder<ResponseMess
     private static final Charset UTF8 = Charset.forName("UTF-8");
 
     @Override
-    protected void encode(final ChannelHandlerContext channelHandlerContext, final ResponseMessage responseMessage, final ByteBuf byteBuf) throws Exception {
-        final MessageSerializer serializer = channelHandlerContext.channel().attr(StateKey.SERIALIZER).get();
-        final boolean useBinary = channelHandlerContext.channel().attr(StateKey.USE_BINARY).get();
+    protected void encode(final ChannelHandlerContext ctx, final ResponseMessage responseMessage, final ByteBuf byteBuf) throws Exception {
+        final MessageSerializer serializer = ctx.channel().attr(StateKey.SERIALIZER).get();
+        final boolean useBinary = ctx.channel().attr(StateKey.USE_BINARY).get();
 
         try {
             if (useBinary) {
                 if (responseMessage.getStatus().getCode().isSuccess())
-                    byteBuf.writeBytes(serializer.serializeResponseAsBinary(responseMessage, channelHandlerContext.alloc()));
+                    byteBuf.writeBytes(serializer.serializeResponseAsBinary(responseMessage, ctx.alloc()));
                 else {
-                    byteBuf.writeBytes(serializer.serializeResponseAsBinary(responseMessage, channelHandlerContext.alloc()));
+                    byteBuf.writeBytes(serializer.serializeResponseAsBinary(responseMessage, ctx.alloc()));
                     final ResponseMessage terminator = ResponseMessage.build(responseMessage.getRequestId()).code(ResponseStatusCode.SUCCESS_TERMINATOR).create();
-                    byteBuf.writeBytes(serializer.serializeResponseAsBinary(terminator, channelHandlerContext.alloc()));
+                    byteBuf.writeBytes(serializer.serializeResponseAsBinary(terminator, ctx.alloc()));
                     errorMeter.mark();
                 }
             } else {
@@ -82,14 +82,14 @@ public class NioGremlinResponseEncoder extends MessageToByteEncoder<ResponseMess
                     .statusMessage(errorMessage)
                     .code(ResponseStatusCode.SERVER_ERROR_SERIALIZATION).create();
             if (useBinary) {
-                channelHandlerContext.write(serializer.serializeResponseAsBinary(error, channelHandlerContext.alloc()));
+                ctx.write(serializer.serializeResponseAsBinary(error, ctx.alloc()), ctx.voidPromise());
                 final ResponseMessage terminator = ResponseMessage.build(responseMessage.getRequestId()).code(ResponseStatusCode.SUCCESS_TERMINATOR).create();
-                channelHandlerContext.writeAndFlush(serializer.serializeResponseAsBinary(terminator, channelHandlerContext.alloc()));
+                ctx.writeAndFlush(serializer.serializeResponseAsBinary(terminator, ctx.alloc()), ctx.voidPromise());
             } else {
                 final MessageTextSerializer textSerializer = (MessageTextSerializer) serializer;
-                channelHandlerContext.write(textSerializer.serializeResponseAsString(error));
+                ctx.write(textSerializer.serializeResponseAsString(error), ctx.voidPromise());
                 final ResponseMessage terminator = ResponseMessage.build(responseMessage.getRequestId()).code(ResponseStatusCode.SUCCESS_TERMINATOR).create();
-                channelHandlerContext.writeAndFlush(textSerializer.serializeResponseAsString(terminator));
+                ctx.writeAndFlush(textSerializer.serializeResponseAsString(terminator), ctx.voidPromise());
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/107e2650/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/OpExecutorHandler.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/OpExecutorHandler.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/OpExecutorHandler.java
index 2a042ca..2850aa2 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/OpExecutorHandler.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/OpExecutorHandler.java
@@ -56,10 +56,10 @@ public class OpExecutorHandler extends SimpleChannelInboundHandler<Pair<RequestM
     }
 
     @Override
-    protected void channelRead0(final ChannelHandlerContext channelHandlerContext, final Pair<RequestMessage, ThrowingConsumer<Context>> objects) throws Exception {
+    protected void channelRead0(final ChannelHandlerContext ctx, final Pair<RequestMessage, ThrowingConsumer<Context>> objects) throws Exception {
         final RequestMessage msg = objects.getValue0();
         final ThrowingConsumer<Context> op = objects.getValue1();
-        final Context gremlinServerContext = new Context(msg, channelHandlerContext,
+        final Context gremlinServerContext = new Context(msg, ctx,
                 settings, graphs, gremlinExecutor, scheduledExecutorService);
 
         try {
@@ -68,7 +68,7 @@ public class OpExecutorHandler extends SimpleChannelInboundHandler<Pair<RequestM
             // Ops may choose to throw OpProcessorException or write the error ResponseMessage down the line
             // themselves
             logger.warn(ope.getMessage(), ope);
-            channelHandlerContext.writeAndFlush(ope.getResponseMessage());
+            ctx.writeAndFlush(ope.getResponseMessage(), ctx.voidPromise());
         } finally {
             ReferenceCountUtil.release(objects);
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/107e2650/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/OpSelectorHandler.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/OpSelectorHandler.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/OpSelectorHandler.java
index dca348a..7323623 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/OpSelectorHandler.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/OpSelectorHandler.java
@@ -67,9 +67,9 @@ public class OpSelectorHandler extends MessageToMessageDecoder<RequestMessage> {
     }
 
     @Override
-    protected void decode(final ChannelHandlerContext channelHandlerContext, final RequestMessage msg,
+    protected void decode(final ChannelHandlerContext ctx, final RequestMessage msg,
                           final List<Object> objects) throws Exception {
-        final Context gremlinServerContext = new Context(msg, channelHandlerContext, settings,
+        final Context gremlinServerContext = new Context(msg, ctx, settings,
                 graphs, gremlinExecutor, this.scheduledExecutorService);
         try {
             // choose a processor to do the work based on the request message.
@@ -86,7 +86,7 @@ public class OpSelectorHandler extends MessageToMessageDecoder<RequestMessage> {
         } catch (OpProcessorException ope) {
             errorMeter.mark();
             logger.warn(ope.getMessage(), ope);
-            channelHandlerContext.writeAndFlush(ope.getResponseMessage());
+            ctx.writeAndFlush(ope.getResponseMessage(), ctx.voidPromise());
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/107e2650/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsGremlinResponseEncoder.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsGremlinResponseEncoder.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsGremlinResponseEncoder.java
index 5967311..44731bb 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsGremlinResponseEncoder.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsGremlinResponseEncoder.java
@@ -48,10 +48,10 @@ public class WsGremlinResponseEncoder extends MessageToMessageEncoder<ResponseMe
     static final Meter errorMeter = MetricManager.INSTANCE.getMeter(name(GremlinServer.class, "errors"));
 
     @Override
-    protected void encode(final ChannelHandlerContext channelHandlerContext, final ResponseMessage o, final List<Object> objects) throws Exception {
-        final MessageSerializer serializer = channelHandlerContext.channel().attr(StateKey.SERIALIZER).get();
-        final boolean useBinary = channelHandlerContext.channel().attr(StateKey.USE_BINARY).get();
-        final Session session = channelHandlerContext.channel().attr(StateKey.SESSION).get();
+    protected void encode(final ChannelHandlerContext ctx, final ResponseMessage o, final List<Object> objects) throws Exception {
+        final MessageSerializer serializer = ctx.channel().attr(StateKey.SERIALIZER).get();
+        final boolean useBinary = ctx.channel().attr(StateKey.USE_BINARY).get();
+        final Session session = ctx.channel().attr(StateKey.SESSION).get();
 
         try {
             if (useBinary) {
@@ -59,16 +59,16 @@ public class WsGremlinResponseEncoder extends MessageToMessageEncoder<ResponseMe
 
                 // if the request came in on a session then the serialization must occur in that same thread.
                 if (null == session)
-                    serialized = serializer.serializeResponseAsBinary(o, channelHandlerContext.alloc());
+                    serialized = serializer.serializeResponseAsBinary(o, ctx.alloc());
                 else
-                    serialized = session.getExecutor().submit(() -> serializer.serializeResponseAsBinary(o, channelHandlerContext.alloc())).get();
+                    serialized = session.getExecutor().submit(() -> serializer.serializeResponseAsBinary(o, ctx.alloc())).get();
 
                 if (o.getStatus().getCode().isSuccess())
                     objects.add(new BinaryWebSocketFrame(serialized));
                 else {
                     objects.add(new BinaryWebSocketFrame(serialized));
                     final ResponseMessage terminator = ResponseMessage.build(o.getRequestId()).code(ResponseStatusCode.SUCCESS_TERMINATOR).create();
-                    objects.add(new BinaryWebSocketFrame(serializer.serializeResponseAsBinary(terminator, channelHandlerContext.alloc())));
+                    objects.add(new BinaryWebSocketFrame(serializer.serializeResponseAsBinary(terminator, ctx.alloc())));
                     errorMeter.mark();
                 }
             } else {
@@ -102,14 +102,14 @@ public class WsGremlinResponseEncoder extends MessageToMessageEncoder<ResponseMe
                     .statusMessage(errorMessage)
                     .code(ResponseStatusCode.SERVER_ERROR_SERIALIZATION).create();
             if (useBinary) {
-                channelHandlerContext.write(new BinaryWebSocketFrame(serializer.serializeResponseAsBinary(error, channelHandlerContext.alloc())));
+                ctx.write(new BinaryWebSocketFrame(serializer.serializeResponseAsBinary(error, ctx.alloc())), ctx.voidPromise());
                 final ResponseMessage terminator = ResponseMessage.build(o.getRequestId()).code(ResponseStatusCode.SUCCESS_TERMINATOR).create();
-                channelHandlerContext.writeAndFlush(new BinaryWebSocketFrame(serializer.serializeResponseAsBinary(terminator, channelHandlerContext.alloc())));
+                ctx.writeAndFlush(new BinaryWebSocketFrame(serializer.serializeResponseAsBinary(terminator, ctx.alloc())), ctx.voidPromise());
             } else {
                 final MessageTextSerializer textSerializer = (MessageTextSerializer) serializer;
-                channelHandlerContext.write(new TextWebSocketFrame(textSerializer.serializeResponseAsString(error)));
+                ctx.write(new TextWebSocketFrame(textSerializer.serializeResponseAsString(error)), ctx.voidPromise());
                 final ResponseMessage terminator = ResponseMessage.build(o.getRequestId()).code(ResponseStatusCode.SUCCESS_TERMINATOR).create();
-                channelHandlerContext.writeAndFlush(new TextWebSocketFrame(textSerializer.serializeResponseAsString(terminator)));
+                ctx.writeAndFlush(new TextWebSocketFrame(textSerializer.serializeResponseAsString(terminator)), ctx.voidPromise());
             }
         }
     }