Added a bit of logging and error handling.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/186f26ba Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/186f26ba Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/186f26ba Branch: refs/heads/TINKERPOP-1278 Commit: 186f26ba08ca8ee2408003f98a1579bc999ccd36 Parents: 4191efc Author: Stephen Mallette <[email protected]> Authored: Fri Aug 26 10:53:13 2016 -0400 Committer: Stephen Mallette <[email protected]> Committed: Fri Aug 26 10:53:13 2016 -0400 ---------------------------------------------------------------------- .../server/op/traversal/TraversalOpProcessor.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/186f26ba/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/traversal/TraversalOpProcessor.java ---------------------------------------------------------------------- diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/traversal/TraversalOpProcessor.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/traversal/TraversalOpProcessor.java index b44c51b..108d3fc 100644 --- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/traversal/TraversalOpProcessor.java +++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/traversal/TraversalOpProcessor.java @@ -180,12 +180,10 @@ public class TraversalOpProcessor extends AbstractOpProcessor { final Optional<UUID> sideEffect = msg.optionalArgs(Tokens.ARGS_SIDE_EFFECT); final TraversalSideEffects sideEffects = cache.getIfPresent(sideEffect.get()); - if (null == sideEffects) { - final String msgDefault = String.format("Could not find side-effects for %s.", sideEffect.get()); - throw new OpProcessorException(msgDefault, ResponseMessage.build(message).code(ResponseStatusCode.SERVER_ERROR).statusMessage(msgDefault).create()); - } + if (null == sideEffects) + logger.warn("Request for side-effect keys on %s returned no side-effects in the cache", sideEffect.get()); - handleIterator(context, sideEffects.keys().iterator()); + handleIterator(context, null == sideEffects ? Collections.emptyIterator() : sideEffects.keys().iterator()); }; break; @@ -284,6 +282,14 @@ public class TraversalOpProcessor extends AbstractOpProcessor { return; } + if (!sideEffects.exists(sideEffectKey.get())) { + final String errorMessage = String.format("Could not find side-effect key for %s in %s.", sideEffectKey.get(), sideEffect.get()); + logger.warn(errorMessage); + ctx.writeAndFlush(ResponseMessage.build(msg).code(ResponseStatusCode.SERVER_ERROR).statusMessage(errorMessage).create()); + onError(graph, context); + return; + } + handleIterator(context, new SideEffectIterator(sideEffects.get(sideEffectKey.get()), sideEffectKey.get())); } catch (TimeoutException ex) { final String errorMessage = String.format("Response iteration exceeded the configured threshold for request [%s] - %s", msg.getRequestId(), ex.getMessage());
