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 2019/07/25 11:13:33 UTC
[tinkerpop] 01/02: Merge branch 'pr-1148' into TINKERPOP-2246
This is an automated email from the ASF dual-hosted git repository.
spmallette pushed a commit to branch TINKERPOP-2246
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 5e19a8888d56c9f81e7cdda5662667e5ec3a831a
Merge: dc3e984 746fb68
Author: Stephen Mallette <sp...@genoprime.com>
AuthorDate: Thu Jul 25 07:12:38 2019 -0400
Merge branch 'pr-1148' into TINKERPOP-2246
CHANGELOG.asciidoc | 2 +
.../apache/tinkerpop/gremlin/server/Context.java | 47 ++++++++++-
.../tinkerpop/gremlin/server/OpProcessor.java | 4 +-
.../gremlin/server/ResponseHandlerContext.java | 90 ----------------------
.../gremlin/server/handler/OpExecutorHandler.java | 5 +-
.../gremlin/server/handler/OpSelectorHandler.java | 2 +-
.../server/handler/SaslAuthenticationHandler.java | 1 +
.../gremlin/server/op/AbstractEvalOpProcessor.java | 80 +++++++------------
.../gremlin/server/op/AbstractOpProcessor.java | 77 ++++++++++--------
.../server/op/session/SessionOpProcessor.java | 9 ++-
.../server/op/standard/StandardOpProcessor.java | 3 +-
.../server/op/traversal/TraversalOpProcessor.java | 81 ++++++++++---------
...nseHandlerContextTest.java => ContextTest.java} | 33 ++++----
.../server/op/AbstractEvalOpProcessorTest.java | 15 ++--
.../gremlin/server/op/AbstractOpProcessorTest.java | 26 +------
15 files changed, 202 insertions(+), 273 deletions(-)
diff --cc CHANGELOG.asciidoc
index da43e36,aa1303f..7bede60
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@@ -42,7 -40,7 +42,9 @@@ image::https://raw.githubusercontent.co
* Fixed bug where client/server exception mismatch when server throw StackOverflowError
* Prevent exception when closing a session that doesn't exist
* Allow predicates and traversals to be used as options in `BranchStep`.
-* Ensure only a single final response is sent to the client.
++* Ensure only a single final response is sent to the client with Gremlin Server.
++* Deprecated `ResponseHandlerContext` and folded its functionality into `Context` in Gremlin Server.
+* Improved performance of `aggregate()` by avoiding excessive calls to `hasNext()` when the barrier is empty.
[[release-3-3-7]]
=== TinkerPop 3.3.7 (Release Date: May 28, 2019)
diff --cc gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractEvalOpProcessor.java
index 39b68c1,f05f7a3..1a26284
--- 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
@@@ -191,10 -193,10 +193,10 @@@ public abstract class AbstractEvalOpPro
* A generalized implementation of the "eval" operation. It handles script evaluation and iteration of results
* so as to write {@link ResponseMessage} objects down the Netty pipeline. It also handles script timeouts,
* iteration timeouts, metrics and building bindings. Note that result iteration is delegated to the
-- * {@link #handleIterator} method, so those extending this class could override that method for better control
-- * over result iteration.
- *
- * @param context The current Gremlin Server {@link Context}
++ * {@link #handleIterator(Context, Iterator)} method, so those extending this class could override that method for
++ * better control over result iteration.
+ * @param ctx The current Gremlin Server {@link Context}. This handler ensures that only a single final
+ * response is sent to the client.
* @param gremlinExecutorSupplier A function that returns the {@link GremlinExecutor} to use in executing the
* script evaluation.
* @param bindingsSupplier A function that returns the {@link Bindings} to provide to the
diff --cc gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractOpProcessor.java
index 0077f3d,e024fda..11540d8
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractOpProcessor.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractOpProcessor.java
@@@ -65,6 -64,6 +65,16 @@@ public abstract class AbstractOpProcess
}
/**
++ * A variant of {@link #handleIterator(Context, Iterator)} that is suitable for use in situations when multiple
++ * threads may produce {@link ResponseStatusCode#isFinalResponse() final} response messages concurrently.
++ * @deprecated As of release 3.3.8, not replaced.
++ */
++ @Deprecated
++ protected void handleIterator(final ResponseHandlerContext rhc, final Iterator itty) throws TimeoutException, InterruptedException {
++ handleIterator(rhc.getContext(), itty);
++ }
++
++ /**
* Provides a generic way of iterating a result set back to the client. Implementers should respect the
* {@link Settings#serializedResponseTimeout} configuration and break the serialization process if
* it begins to take too long to do so, throwing a {@link java.util.concurrent.TimeoutException} in such
@@@ -261,33 -250,12 +261,44 @@@
return Collections.emptyMap();
}
+ /**
- * @deprecated As of release 3.2.2, replaced by {@link #makeFrame(ChannelHandlerContext, RequestMessage, MessageSerializer, boolean, List, ResponseStatusCode, Map)}.
++ * @deprecated As of release 3.2.2, replaced by {@link #makeFrame(Context, RequestMessage, MessageSerializer, boolean, List, ResponseStatusCode, Map)}.
+ */
+ @Deprecated
+ protected static Frame makeFrame(final ChannelHandlerContext ctx, final RequestMessage msg,
+ final MessageSerializer serializer, final boolean useBinary, final List<Object> aggregate,
+ final ResponseStatusCode code) throws Exception {
+ return makeFrame(ctx, msg, serializer, useBinary, aggregate, code, Collections.emptyMap());
+ }
+
+ /**
- * Caution: {@link #makeFrame(ResponseHandlerContext, RequestMessage, MessageSerializer, boolean, List, ResponseStatusCode, Map)}
- * should be used instead of this method whenever a {@link ResponseHandlerContext} is available.
++ * @deprecated As of release 3.3.8, replaced by {@link #makeFrame(Context, RequestMessage, MessageSerializer, boolean, List, ResponseStatusCode, Map)}.
+ */
++ @Deprecated
+ protected static Frame makeFrame(final ChannelHandlerContext ctx, final RequestMessage msg,
- final MessageSerializer serializer, final boolean useBinary, final List<Object> aggregate,
- final ResponseStatusCode code, final Map<String,Object> responseMetaData) throws Exception {
++ final MessageSerializer serializer, final boolean useBinary, final List<Object> aggregate,
++ final ResponseStatusCode code, final Map<String,Object> responseMetaData) throws Exception {
+ final Context context = new Context(msg, ctx, null, null, null, null); // dummy context, good only for writing response messages to the channel
+ final ResponseHandlerContext rhc = new ResponseHandlerContext(context);
+ return makeFrame(rhc, msg, serializer, useBinary, aggregate, code, responseMetaData);
+ }
+
++ /**
++ * @deprecated As of release 3.3.8, replaced by {@link #makeFrame(Context, RequestMessage, MessageSerializer, boolean, List, ResponseStatusCode, Map)}.
++ */
++ @Deprecated
+ protected static Frame makeFrame(final ResponseHandlerContext rhc, final RequestMessage msg,
- final MessageSerializer serializer, final boolean useBinary, final List<Object> aggregate,
- final ResponseStatusCode code, final Map<String,Object> responseMetaData) throws Exception {
- final ChannelHandlerContext ctx = rhc.getContext().getChannelHandlerContext();
++ final MessageSerializer serializer, final boolean useBinary, final List<Object> aggregate,
++ final ResponseStatusCode code, final Map<String,Object> responseMetaData) throws Exception {
++ return makeFrame(rhc.getContext(), msg, serializer, useBinary,aggregate, code, responseMetaData);
++ }
++
+ protected static Frame makeFrame(final Context ctx, final RequestMessage msg,
+ final MessageSerializer serializer, final boolean useBinary, final List<Object> aggregate,
+ final ResponseStatusCode code, final Map<String,Object> responseMetaData) throws Exception {
try {
+ final ChannelHandlerContext nettyContext = ctx.getChannelHandlerContext();
+
if (useBinary) {
return new Frame(serializer.serializeResponseAsBinary(ResponseMessage.build(msg)
.code(code)