tinkerpop-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From pieter martin <pieter.mar...@gmail.com>
Subject Re: KryoSerializable
Date Mon, 12 Aug 2019 17:43:24 GMT
It is in the SqlGraph.io(...)
    @Override    public <I extends Io> I io(final Io.Builder<I>
builder) {        if (builder.requiresVersion(GryoVersion.V1_0) ||
builder.requiresVersion(GraphSONVersion.V1_0))            return (I)
builder.graph(this).onMapper(mapper ->
mapper.addRegistry(SqlgIoRegistryV1.instance())).create();        else
if (builder.requiresVersion(GraphSONVersion.V2_0))   // there is no
gryo v2            return (I) builder.graph(this).onMapper(mapper ->
mapper.addRegistry(SqlgIoRegistryV2.instance())).create();        else 
           return (I) builder.graph(this).onMapper(mapper ->
mapper.addRegistry(SqlgIoRegistryV3.instance())).create();    }
    private SqlgIoRegistryV3() {        final SqlgSimpleModuleV3
sqlgSimpleModule = new
SqlgSimpleModuleV3();        register(GraphSONIo.class, null,
sqlgSimpleModule);        register(GryoIo.class, RecordId.class,
null);    }
I checked it is being invoked.
The test I am currently running is,
        loadModern();        final String fileToWrite =
TestHelper.generateTempFile(WriteTest.class, "tinkerpop-modern-v3d0",
".kryo").getAbsolutePath().replace('\\', '/');        final File f =
new File(fileToWrite);        assertThat(f.length() == 0,
is(true));        final Traversal<Object,Object> traversal
=  this.sqlgGraph.traversal().io(fileToWrite).with(IO.writer,
IO.gryo).write();
And it breaks on kryo.getRegistration(type) where type = class
org.umlg.sqlg.structure.RecordId
public class GryoClassResolverV3d0 {...
public Registration writeClass(final Output output, final Class type)
{    ...    final Registration registration =
kryo.getRegistration(type);    ...}
I only realized now that Graph.io() has been deprecated. Do you think
that that is the reason?
ThanksPieter
On Mon, 2019-08-12 at 08:52 -0400, Stephen Mallette wrote:
> How are you supplying that SqlgIoRegistryV3 to gryo for usage?
> On Mon, Aug 12, 2019 at 8:31 AM pieter martin <
> pieter.martin@gmail.com> wrote:
> > Hi,
> > 
> > 
> > 
> > I am upgrading Sqlg, to 3.4.1 and soon after that to 3.4.3.
> > 
> > 
> > 
> > The process serialization tests are failing with,
> > 
> > 
> > 
> > java.lang.IllegalArgumentException: Class is not registered:
> > org.umlg.sqlg.structure.RecordId
> > 
> > Note: To register this class use:
> > kryo.register(org.umlg.sqlg.structure.RecordId.class);
> > 
> > 
> > 
> > However RecordId is registered in SqlgIoRegistryV3 with
> > 
> > 
> > 
> > register(GryoIo.class, RecordId.class, null);
> > 
> > 
> > 
> > I notice in the provider documentation that a serializer should be
> > 
> > provided.
> > 
> > However RecordId implements KryoSerializable which I understood
> > takes
> > 
> > care of serializing the RecordId.
> > 
> > 
> > 
> > I checked the CustomId class in TinkerPop's code base but it
> > neither
> > 
> > registers a serializer nor implements KryoSerializable.
> > 
> > 
> > 
> > I get a bit lost in reading the serialization code, can you please
> > 
> > point me in the right direction?
> > 
> > 
> > 
> > Thanks
> > 
> > Pieter
> > 
> > 
> > 
> > 
> > 
> > 
> > 

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message