jetbrains-plugin-graph-database-support
jetbrains-plugin-graph-database-support copied to clipboard
Deserialization fails with JanusGraph when relations are returned
While I get queries like MATCH (n)-[r]->(m) RETURN n, m to work, when executing a query like MATCH (n)-[r]->(m) RETURN n, r, m, the plugin fails with:
Executing query:
MATCH (n)-[r]->(m) RETURN n, r, m
Error occurred: Wrong serializer selected. Please check connection configuration. Details...
Regardless of the serializer; in fact, all of the selected do work, as long as I don't attempt to return a relation.
Sadly I can't copy the details from the dialog window, but the error messages go along the line of
org.apache.tinkerpop.shaded.kryo.KryoException: Encountered unregistered class ID: 65536(when using Gryo), ororg.apache.tinkerpop.shaded.jackson.databing.exc.MismatchedInputException: Cannot deserialize instance of 'java.lang.String' out of START_OBJECT token(when using Graphson)

Now this seems to be a known issue and apparently boils down to org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry being unknown on the client side. For example, see e.g.
- https://stackoverflow.com/a/53207419/195651
- https://github.com/orientechnologies/orientdb-gremlin/issues/161#issuecomment-474610383
As far as JanusGraph is concerned, I can work around this issue by replacing
org.janusgraph.channelizers.JanusGraphWsAndHttpChannelizerwithorg.apache.tinkerpop.gremlin.server.channel.WsAndHttpChannelizer, andorg.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistrywithorg.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0,
but I'm not sure of the implications there.
Instead, would it be possible to register JanusGraph's types with the plugin so that it works out of the box? I have a Docker Compose setup ready at sunsided/janusgraph-docker that might help in testing.
Thanks for such complete and useful issue description. Will look closely into it.