You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by jo...@apache.org on 2019/02/07 09:18:42 UTC
[tinkerpop] branch master updated: GraphBinary: use exception
instead of assertion for msb check CTR
This is an automated email from the ASF dual-hosted git repository.
jorgebg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
The following commit(s) were added to refs/heads/master by this push:
new f799335 GraphBinary: use exception instead of assertion for msb check CTR
f799335 is described below
commit f799335a29e5da98644b75e8d5d9aea810bc6262
Author: Jorge Bay Gondra <jo...@gmail.com>
AuthorDate: Thu Feb 7 10:18:38 2019 +0100
GraphBinary: use exception instead of assertion for msb check CTR
---
.../gremlin/driver/ser/binary/RequestMessageSerializer.java | 9 +++++++--
.../gremlin/driver/ser/binary/ResponseMessageSerializer.java | 9 +++++++--
.../driver/ser/binary/GraphBinaryMessageSerializerV1Test.java | 9 +++++++++
3 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/binary/RequestMessageSerializer.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/binary/RequestMessageSerializer.java
index 7ac1c97..3277598 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/binary/RequestMessageSerializer.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/binary/RequestMessageSerializer.java
@@ -29,8 +29,13 @@ import java.util.UUID;
public class RequestMessageSerializer {
public RequestMessage readValue(final ByteBuf buffer, final GraphBinaryReader context) throws SerializationException {
- final int version = buffer.readByte();
- assert version >>> 31 == 1;
+ final int version = buffer.readByte() & 0xff;
+
+ if (version >>> 7 != 1) {
+ // This is an indication that the request buffer was incorrectly built
+ // Or the buffer offsets are wrong
+ throw new SerializationException("The most significant bit should be set according to the format");
+ }
final UUID id = context.readValue(buffer, UUID.class, false);
final String op = context.readValue(buffer, String.class, false);
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/binary/ResponseMessageSerializer.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/binary/ResponseMessageSerializer.java
index cceb260..f93fe28 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/binary/ResponseMessageSerializer.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/binary/ResponseMessageSerializer.java
@@ -32,8 +32,13 @@ import java.util.UUID;
public class ResponseMessageSerializer {
public ResponseMessage readValue(final ByteBuf buffer, final GraphBinaryReader context, final boolean nullable) throws SerializationException {
- final int version = buffer.readByte();
- assert version >>> 31 == 1;
+ final int version = buffer.readByte() & 0xff;
+
+ if (version >>> 7 != 1) {
+ // This is an indication that the response buffer was incorrectly built
+ // Or the buffer offsets are wrong
+ throw new SerializationException("The most significant bit should be set according to the format");
+ }
return ResponseMessage.build(context.readValue(buffer, UUID.class, true))
.code(ResponseStatusCode.getFromValue(context.readValue(buffer, Integer.class, false)))
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/binary/GraphBinaryMessageSerializerV1Test.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/binary/GraphBinaryMessageSerializerV1Test.java
index 0e8e7ed..7321d1e 100644
--- a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/binary/GraphBinaryMessageSerializerV1Test.java
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/binary/GraphBinaryMessageSerializerV1Test.java
@@ -148,6 +148,15 @@ public class GraphBinaryMessageSerializerV1Test {
assertEquals(1, counter);
}
+ @Test(expected = IllegalStateException.class)
+ public void shouldThrowWhenConfigurationOfRegistryBuilderFails() {
+ final GraphBinaryMessageSerializerV1 serializer = new GraphBinaryMessageSerializerV1();
+ final Map<String, Object> config = new HashMap<>();
+ config.put(GraphBinaryMessageSerializerV1.TOKEN_BUILDER, "org.apache.tinkerpop.gremlin.driver.ser.binary.NonExistentClass");
+
+ serializer.configure(config, null);
+ }
+
private static void assertResponseEquals(ResponseMessage expected, ResponseMessage actual) {
assertEquals(expected.getRequestId(), actual.getRequestId());
// Status