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/12/16 16:21:37 UTC
incubator-tinkerpop git commit: Deprecated some old handlers in
Gremlin Server.
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/TINKERPOP-1035 f81d5c4c1 -> 0b9556d8e
Deprecated some old handlers in Gremlin Server.
No one should be using these directly but as they are public, it felt better to just deprecate for now.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/0b9556d8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/0b9556d8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/0b9556d8
Branch: refs/heads/TINKERPOP-1035
Commit: 0b9556d8e3e2b025103564ba2e57dc128583f18e
Parents: f81d5c4
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Dec 16 10:18:54 2015 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Dec 16 10:18:54 2015 -0500
----------------------------------------------------------------------
.../gremlin/server/channel/NioChannelizer.java | 2 -
.../gremlin/server/handler/IteratorHandler.java | 2 +
.../handler/NioGremlinResponseEncoder.java | 4 +
.../handler/NioGremlinResponseFrameEncoder.java | 2 +
.../handler/WsGremlinResponseEncoder.java | 105 +++++++++++++++++++
5 files changed, 113 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/0b9556d8/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/NioChannelizer.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/NioChannelizer.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/NioChannelizer.java
index d97cf83..d2ba520 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/NioChannelizer.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/NioChannelizer.java
@@ -23,13 +23,11 @@ import org.apache.tinkerpop.gremlin.server.AbstractChannelizer;
import org.apache.tinkerpop.gremlin.server.auth.AllowAllAuthenticator;
import org.apache.tinkerpop.gremlin.server.handler.GremlinResponseFrameEncoder;
import org.apache.tinkerpop.gremlin.server.handler.NioGremlinBinaryRequestDecoder;
-import org.apache.tinkerpop.gremlin.server.handler.NioGremlinResponseEncoder;
import io.netty.channel.ChannelPipeline;
import io.netty.handler.logging.LogLevel;
import io.netty.handler.logging.LoggingHandler;
import org.apache.tinkerpop.gremlin.server.handler.NioGremlinResponseFrameEncoder;
import org.apache.tinkerpop.gremlin.server.handler.SaslAuthenticationHandler;
-import org.apache.tinkerpop.gremlin.server.handler.WsGremlinResponseFrameEncoder;
import org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/0b9556d8/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 2fcfc1b..527aa37 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
@@ -47,7 +47,9 @@ import java.util.concurrent.TimeoutException;
* are passed to it, they do not contain large result sets or iterates over objects that require network calls.
*
* @author Stephen Mallette (http://stephen.genoprime.com)
+ * @deprecated As of release 3.1.1-incubating, not directly replaced.
*/
+@Deprecated
@ChannelHandler.Sharable
public class IteratorHandler extends ChannelOutboundHandlerAdapter {
private static final Logger logger = LoggerFactory.getLogger(IteratorHandler.class);
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/0b9556d8/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 e62703f..6a98b8b 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
@@ -37,7 +37,11 @@ import static com.codahale.metrics.MetricRegistry.name;
/**
* @author Stephen Mallette (http://stephen.genoprime.com)
+ * @deprecated As of release 3.1.1-incubating, replaced by {@link NioGremlinResponseFrameEncoder} and
+ * {@link GremlinResponseFrameEncoder}
+ * @see <a href="https://issues.apache.org/jira/browse/TINKERPOP-1035">TINKERPOP-1035</a>
*/
+@Deprecated
@ChannelHandler.Sharable
public class NioGremlinResponseEncoder extends MessageToByteEncoder<ResponseMessage> {
private static final Logger logger = LoggerFactory.getLogger(NioGremlinResponseEncoder.class);
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/0b9556d8/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/NioGremlinResponseFrameEncoder.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/NioGremlinResponseFrameEncoder.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/NioGremlinResponseFrameEncoder.java
index 7c1c9d8..119b3ef 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/NioGremlinResponseFrameEncoder.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/NioGremlinResponseFrameEncoder.java
@@ -25,6 +25,8 @@ import io.netty.handler.codec.MessageToByteEncoder;
import io.netty.util.CharsetUtil;
/**
+ * Encodes {@code ByteBuf} and {@code String} values to bytes to be written over NIO.
+ *
* @author Stephen Mallette (http://stephen.genoprime.com)
*/
@ChannelHandler.Sharable
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/0b9556d8/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
new file mode 100644
index 0000000..80565f1
--- /dev/null
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsGremlinResponseEncoder.java
@@ -0,0 +1,105 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.server.handler;
+
+import com.codahale.metrics.Meter;
+import org.apache.tinkerpop.gremlin.driver.MessageSerializer;
+import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
+import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
+import org.apache.tinkerpop.gremlin.driver.ser.MessageTextSerializer;
+import org.apache.tinkerpop.gremlin.server.GremlinServer;
+import org.apache.tinkerpop.gremlin.server.op.session.Session;
+import org.apache.tinkerpop.gremlin.server.util.MetricManager;
+import io.netty.buffer.ByteBuf;
+import io.netty.channel.ChannelHandler;
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.handler.codec.MessageToMessageEncoder;
+import io.netty.handler.codec.http.websocketx.BinaryWebSocketFrame;
+import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+
+import static com.codahale.metrics.MetricRegistry.name;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @deprecated As of release 3.1.1-incubating, replaced by {@link WsGremlinResponseFrameEncoder} and
+ * {@link GremlinResponseFrameEncoder}
+ * @see <a href="https://issues.apache.org/jira/browse/TINKERPOP-1035">TINKERPOP-1035</a>
+ */
+@Deprecated
+@ChannelHandler.Sharable
+public class WsGremlinResponseEncoder extends MessageToMessageEncoder<ResponseMessage> {
+ private static final Logger logger = LoggerFactory.getLogger(WsGremlinResponseEncoder.class);
+ static final Meter errorMeter = MetricManager.INSTANCE.getMeter(name(GremlinServer.class, "errors"));
+
+ @Override
+ 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 (!o.getStatus().getCode().isSuccess())
+ errorMeter.mark();
+
+ if (useBinary) {
+ final ByteBuf serialized;
+
+ // if the request came in on a session then the serialization must occur in that same thread.
+ if (null == session)
+ serialized = serializer.serializeResponseAsBinary(o, ctx.alloc());
+ else
+ serialized = session.getExecutor().submit(() -> serializer.serializeResponseAsBinary(o, ctx.alloc())).get();
+
+ objects.add(new BinaryWebSocketFrame(serialized));
+ } else {
+ // the expectation is that the GremlinTextRequestDecoder will have placed a MessageTextSerializer
+ // instance on the channel.
+ final MessageTextSerializer textSerializer = (MessageTextSerializer) serializer;
+
+ final String serialized;
+
+ // if the request came in on a session then the serialization must occur in that same thread.
+ if (null == session)
+ serialized = textSerializer.serializeResponseAsString(o);
+ else
+ serialized = session.getExecutor().submit(() -> textSerializer.serializeResponseAsString(o)).get();
+
+ objects.add(new TextWebSocketFrame(true, 0, serialized));
+ }
+ } catch (Exception ex) {
+ errorMeter.mark();
+ logger.warn("The result [{}] in the request {} could not be serialized and returned.", o.getResult(), o.getRequestId(), ex);
+ final String errorMessage = String.format("Error during serialization: %s",
+ ex.getCause() != null ? ex.getCause().getMessage() : ex.getMessage());
+ final ResponseMessage error = ResponseMessage.build(o.getRequestId())
+ .statusMessage(errorMessage)
+ .code(ResponseStatusCode.SERVER_ERROR_SERIALIZATION).create();
+ if (useBinary) {
+ objects.add(new BinaryWebSocketFrame(serializer.serializeResponseAsBinary(error, ctx.alloc())));
+ } else {
+ final MessageTextSerializer textSerializer = (MessageTextSerializer) serializer;
+ objects.add(new TextWebSocketFrame(textSerializer.serializeResponseAsString(error)));
+ }
+ }
+ }
+}
\ No newline at end of file