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());
});
}
}