Why is the default serializer in conf/remote.yaml GryoV3?

Im using Janusgraph 0.6.0 in a docker container. Everytime i start the container, I get the message "The org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0 serialization class is deprecated." two times. So why does the conf/remote.yaml contains "serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { serializeResultToString: true }} " ? I would expect there should be a GraphsonSerilizer or something thats not deprecated at least. And I also dont understand why I get a serialization error when using in management api in gremlin console after i tried replacing that config with "GraphSONMessageSerializerV3d0"
1 Reply
Florian Hockmann
Florian Hockmann12mo ago
The error should be coming from the server, not from the client, if I'm not mistaken. And it will stay as long as the server has the Gryo message serializer configured. If you remove that config from the server, then the warning should disappear but then you of course also must be sure that you don't have any clients left that are still using Gryo. That is why the Gryo message serializers are still present in the 0.6 versions. They will however be removed in 1.0.0: https://docs.janusgraph.org/master/changelog/#drop-support-for-gryo-messageserializer Now to the conf/remote.yaml which is a config file used by the driver on the client-side: TinkerPop moved from Gryo straight to GraphBinary as the default serialization format. GraphBinary support however was problematic in JanusGraph versions <1.0.0, at least for Geoshapes. The reason is that JanusGraph uses a custom Java library for Geoshapes which makes it hard to serialize them in a language-agnostic way. We have completely re-implented the GraphBinary serialization of Geoshapes in 1.0.0 to make it possible for non-Java languages to support it. (JanusGraph.Net will also support it for 1.0.0.) That however required a breaking change: https://docs.janusgraph.org/master/changelog/#breaking-change-for-geoshape-graphbinary-serialization For these reasons, we didn't want to make GraphBinary the default serialization format for JanusGraph until version 1.0.0. GraphSON would have been an alternative as the default serialization format, but it has the downside that it has a much higher footprint since it's based on JSON whereas Gryo and GraphBinary are binary formats. So, we preferred to go directly from Gryo to GraphBinary. The downside of this is that migrating to 1.0.0 requires to update clients to GraphBinary or GraphSON as they can't talk to a server on 1.0.0 if they are still using Gryo