This is an automated email from the ASF dual-hosted git repository.
kenhuuu pushed a commit to branch master-http
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
The following commit(s) were added to refs/heads/master-http by this push:
new 102e76d665 Remove RequestId from RequestMessageV4 CTR.
102e76d665 is described below
commit 102e76d665a5bc0c97a2f4f858e15b0c1e5ac9db
Author: Ken Hu <[email protected]>
AuthorDate: Tue May 14 20:51:34 2024 -0700
Remove RequestId from RequestMessageV4 CTR.
The user is no longer allowed to set a custom UUID per request and the
request ID is always generated by the server so remove it from the
RequestMessageV4.
---
.../server/handler/HttpGremlinEndpointHandler.java | 8 ++--
.../handler/HttpRequestMessageDecoderTest.java | 44 ++--------------------
.../gremlin/util/message/RequestMessageV4.java | 11 ------
3 files changed, 9 insertions(+), 54 deletions(-)
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 5698321dcc..bcb93ffc6a 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
@@ -81,6 +81,7 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
+import java.util.UUID;
import java.util.concurrent.Future;
import java.util.concurrent.FutureTask;
import java.util.concurrent.RejectedExecutionException;
@@ -402,8 +403,8 @@ public class HttpGremlinEndpointHandler extends
SimpleChannelInboundHandler<Requ
private void iterateTraversal(final Context context,
MessageSerializerV4<?> serializer, Traversal.Admin<?, ?> traversal)
throws InterruptedException {
- final RequestMessageV4 msg = context.getRequestMessage();
- logger.debug("Traversal request {} for in thread {}",
msg.getRequestId(), Thread.currentThread().getName());
+ final UUID requestId =
context.getChannelHandlerContext().attr(StateKey.REQUEST_ID).get();
+ logger.debug("Traversal request {} for in thread {}", requestId,
Thread.currentThread().getName());
// compile the traversal - without it getEndStep() has nothing in it
traversal.applyStrategies();
@@ -583,7 +584,8 @@ public class HttpGremlinEndpointHandler extends
SimpleChannelInboundHandler<Requ
return serializer.serializeResponseAsBinary(responseMessage,
nettyContext.alloc());
} catch (Exception ex) {
- logger.warn("The result [{}] in the request {} could not be
serialized and returned.", aggregate, msg.getRequestId(), ex);
+ final UUID requestId =
ctx.getChannelHandlerContext().attr(StateKey.REQUEST_ID).get();
+ logger.warn("The result [{}] in the request {} could not be
serialized and returned.", aggregate, requestId, ex);
writeError(ctx, GremlinError.serialization(ex), serializer);
throw ex;
}
diff --git
a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/handler/HttpRequestMessageDecoderTest.java
b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/handler/HttpRequestMessageDecoderTest.java
index 8c13acb7f4..0fe18c15e6 100644
---
a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/handler/HttpRequestMessageDecoderTest.java
+++
b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/handler/HttpRequestMessageDecoderTest.java
@@ -88,7 +88,7 @@ public class HttpRequestMessageDecoderTest {
assertNull(testChannel.readInbound());
ByteBuf out = testChannel.readOutbound();
- assertTrue(out.toString(CharsetUtil.UTF_8).contains("Mime type
mismatch"));
+ assertTrue(out.toString(CharsetUtil.UTF_8).contains("Unable to
deserialize request using"));
}
@Test
@@ -120,10 +120,8 @@ public class HttpRequestMessageDecoderTest {
final EmbeddedChannel testChannel = new EmbeddedChannel(new
HttpServerCodec(), new HttpObjectAggregator(Integer.MAX_VALUE),
requestMessageDecoder);
final String gremlin = "g.V().hasLabel('person')";
- final UUID requestId = UUID.randomUUID();
final ByteBuf buffer = allocator.buffer();
buffer.writeCharSequence("{ \"gremlin\": \"" + gremlin +
- "\", \"requestId\": \"" + requestId +
"\", \"language\": \"gremlin-groovy\"}",
CharsetUtil.UTF_8);
@@ -138,7 +136,6 @@ public class HttpRequestMessageDecoderTest {
final RequestMessageV4 decodedRequestMessage =
testChannel.readInbound();
assertEquals(gremlin, decodedRequestMessage.getGremlin());
- assertEquals(requestId, decodedRequestMessage.getRequestId());
assertEquals("gremlin-groovy",
decodedRequestMessage.getField(Tokens.ARGS_LANGUAGE));
}
@@ -148,10 +145,8 @@ public class HttpRequestMessageDecoderTest {
final EmbeddedChannel testChannel = new EmbeddedChannel(new
HttpServerCodec(), new HttpObjectAggregator(Integer.MAX_VALUE),
requestMessageDecoder);
final String gremlin = "g.V(x)";
- final UUID requestId =
UUID.fromString("1e55c495-22d5-4a39-934a-a2744ba010ef");
final ByteBuf buffer = allocator.buffer();
buffer.writeCharSequence("{ \"gremlin\": \"" + gremlin +
- "\", \"requestId\": \"" + requestId +
"\", \"bindings\":{\"x\":\"2\"}" +
", \"language\": \"gremlin-groovy\"}",
CharsetUtil.UTF_8);
@@ -167,39 +162,10 @@ public class HttpRequestMessageDecoderTest {
final RequestMessageV4 decodedRequestMessage =
testChannel.readInbound();
assertEquals(gremlin, decodedRequestMessage.getGremlin());
- assertEquals(requestId, decodedRequestMessage.getRequestId());
assertEquals("gremlin-groovy",
decodedRequestMessage.getField(Tokens.ARGS_LANGUAGE));
assertEquals("2",
((Map)decodedRequestMessage.getField(Tokens.ARGS_BINDINGS)).get("x"));
}
- @Test
- public void shouldErrorOnBadRequestWithInvalidUuid() throws
SerializationException {
- final HttpRequestMessageDecoder requestMessageDecoder = new
HttpRequestMessageDecoder(serializers);
- final EmbeddedChannel testChannel = new EmbeddedChannel(new
HttpServerCodec(), new HttpObjectAggregator(Integer.MAX_VALUE),
requestMessageDecoder);
-
- final String gremlin = "g.V(x)";
- final String requestId = "notaUUID";
- final ByteBuf buffer = allocator.buffer();
- buffer.writeCharSequence("{ \"gremlin\": \"" + gremlin +
- "\", \"requestId\": \"" + requestId +
- "\", \"language\": \"gremlin-groovy\"}",
- CharsetUtil.UTF_8);
-
- final HttpHeaders headers = new DefaultHttpHeaders();
- headers.add(HttpHeaderNames.CONTENT_TYPE, SerTokens.MIME_JSON);
-
- final FullHttpRequest httpRequest = new
DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.POST, "",
- buffer, headers, new DefaultHttpHeaders());
-
- testChannel.writeInbound(httpRequest);
- testChannel.finish();
-
- assertNull(testChannel.readInbound());
-
- ByteBuf out = testChannel.readOutbound();
- assertTrue(out.toString(CharsetUtil.UTF_8).contains("Invalid UUID
string"));
- }
-
@Test
public void shouldErrorOnBadRequestWithMalformedJson() throws
SerializationException {
final HttpRequestMessageDecoder requestMessageDecoder = new
HttpRequestMessageDecoder(serializers);
@@ -232,12 +198,10 @@ public class HttpRequestMessageDecoderTest {
final EmbeddedChannel testChannel = new EmbeddedChannel(new
HttpServerCodec(), new HttpObjectAggregator(Integer.MAX_VALUE),
requestMessageDecoder);
final String gremlin = "g.V(x)";
- final UUID requestId = UUID.randomUUID();
final ByteBuf buffer = allocator.buffer();
- // requestId contains a typo here as requetId
+ // language contains a typo here as lnguage
buffer.writeCharSequence("{ \"gremlin\": \"" + gremlin +
- "\", \"requetId\": \"" + requestId +
- "\", \"language\": \"gremlin-groovy\"}",
+ "\", \"lnguage\": \"abc\"}",
CharsetUtil.UTF_8);
final HttpHeaders headers = new DefaultHttpHeaders();
@@ -250,7 +214,7 @@ public class HttpRequestMessageDecoderTest {
testChannel.finish();
final RequestMessageV4 decodedRequestMessage =
testChannel.readInbound();
- assertNotEquals(requestId, decodedRequestMessage.getRequestId());
+ assertNotEquals("abc",
decodedRequestMessage.getField(Tokens.ARGS_LANGUAGE));
}
@Test
diff --git
a/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/message/RequestMessageV4.java
b/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/message/RequestMessageV4.java
index e457dc921e..f3fa0f72f8 100644
---
a/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/message/RequestMessageV4.java
+++
b/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/message/RequestMessageV4.java
@@ -40,7 +40,6 @@ public final class RequestMessageV4 {
private String gremlinType; // Type information needed to help deserialize
"gremlin" into either String/Bytecode.
private Object gremlin; // Should be either a String or Bytecode type.
private Map<String, Object> fields;
- private UUID requestId;
private RequestMessageV4(final Object gremlin, final Map<String, Object>
fields) {
if (null == gremlin) throw new
IllegalArgumentException("RequestMessage requires gremlin argument");
@@ -61,8 +60,6 @@ public final class RequestMessageV4 {
}
this.fields.put("gremlinType", gremlinType);
-
- requestId = UUID.randomUUID();
}
/**
@@ -70,14 +67,6 @@ public final class RequestMessageV4 {
*/
private RequestMessageV4() { }
- /**
- * The id of the current request.
- * Used only in GLV, not transmitted to the server.
- */
- public UUID getRequestId() {
- return requestId;
- }
-
public <T> Optional<T> optionalField(final String key) {
final Object o = fields.get(key);
return o == null ? Optional.empty() : Optional.of((T) o);