Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Connecting JanusGraph using Gremlin and Java gives Serialization Exception (Encountered unregistered class ID: 65536)

I am trying to connect to Janus Graph using following Java Program. I am trying to get an entry from existing Graph.

I am using Janusgraph(0.4.0) with Cassandra (3.11.5).

Graph graph = EmptyGraph.instance();
GraphTraversalSource g = graph.traversal().withRemote(DriverRemoteConnection.using("localhost", 8182, "g"));
GryoMessageSerializerV3d0 serializer = new org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0();
Object id = g.V().has("name", "Cisco").outE().hasLabel("Configuration").inV().has("name", "Day0").outE().next();

I am getting Following Exception when I run the program

    Caused by: org.apache.tinkerpop.gremlin.driver.ser.SerializationException: org.apache.tinkerpop.shaded.kryo.KryoException: Encountered unregistered class ID: 65536
Serialization trace:
id (org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceEdge)
        at org.apache.tinkerpop.gremlin.driver.ser.AbstractGryoMessageSerializerV3d0.deserializeResponse(AbstractGryoMessageSerializerV3d0.java:161)
        at org.apache.tinkerpop.gremlin.driver.handler.WebSocketGremlinResponseDecoder.decode(WebSocketGremlinResponseDecoder.java:50)
        at org.apache.tinkerpop.gremlin.driver.handler.WebSocketGremlinResponseDecoder.decode(WebSocketGremlinResponseDecoder.java:37)
        at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88)
        ... 24 more
Caused by: org.apache.tinkerpop.shaded.kryo.KryoException: Encountered unregistered class ID: 65536
Serialization trace:
id (org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceEdge)
        at org.apache.tinkerpop.gremlin.structure.io.gryo.AbstractGryoClassResolver.readClass(AbstractGryoClassResolver.java:148)
        at org.apache.tinkerpop.shaded.kryo.Kryo.readClass(Kryo.java:670)
        at org.apache.tinkerpop.shaded.kryo.serializers.ObjectField.read(ObjectField.java:118)
        at org.apache.tinkerpop.shaded.kryo.serializers.FieldSerializer.read(FieldSerializer.java:551)
        at org.apache.tinkerpop.shaded.kryo.Kryo.readClassAndObject(Kryo.java:790)
        at org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.shaded.ShadedKryoAdapter.readClassAndObject(ShadedKryoAdapter.java:39)
        at org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.shaded.ShadedKryoAdapter.readClassAndObject(ShadedKryoAdapter.java:24)
        at org.apache.tinkerpop.gremlin.structure.io.gryo.GryoSerializersV3d0$DefaultRemoteTraverserSerializer.read(GryoSerializersV3d0.java:417)

Here is my gremlin-server.yaml Configuration

**serializers:
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }}**
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { serializeResultToString: true }}
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }}

Here is my remote-objects.yaml Configuration

hosts: [localhost]
port: 8182
serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }}

I tried finding the solution and most of the portals were pointing to the mismatch between remote and client Serialization Configuration.

In my case, both are matching and I dont see any discrepancy.

like image 807
Bhaskar Ragireddy Avatar asked Nov 18 '25 09:11

Bhaskar Ragireddy


1 Answers

Well, your remote-objects.yaml appears correct but your code doesn't show that you're using that file. You instead initialize your g as:

GraphTraversalSource g = graph.traversal().
                               withRemote(DriverRemoteConnection.using("localhost", 8182, "g"));

If you intend to use the yaml file to connect it should be:

GraphTraversalSource g = graph.traversal().
                               withRemote(DriverRemoteConnection.using("remote-objects.yaml"));
like image 109
stephen mallette Avatar answered Nov 19 '25 22:11

stephen mallette



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!