We currently have a wide range of serialization options in Gryo around
different types of "detached" Vertex/Edge instances which typically just
used the default Kryo FieldSerializer. As mentioned earlier in this thread,
I've wanted to change that pattern a bit for Gryo 3.0. I think that we can
have one serializer that will efficiently serialize each type of "detached"
Vertex/Edge that we have. When done in conjunction with TINKERPOP-1592 I
think we will have a good solid design in place for 3.3.0.

You can take a look at what's in store for the Gryo 3.0 Element serializers
so far here:

https://github.com/apache/tinkerpop/blob/TINKERPOP-1698/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializersV3d0.java

Hopefully this branch can form into a PR within the coming days.



On Mon, Jun 26, 2017 at 6:22 PM, Stephen Mallette <spmalle...@gmail.com>
wrote:

> Now that we have gremlin-io-test for 3.3.0 which tests different versions
> of gryo/graphson over different versions of tinkerpop (meaning the current
> version you build with ensure that it can still read/write the old formats)
> do we need to do this:
>
> https://issues.apache.org/jira/browse/TINKERPOP-1364
>
> I tend to think the answer is "no" at this point. I think that for the
> distributions we just need to have Gryo and GraphSON 3.0 and that's it (and
> obviously the existing GraphML files). If we do that we should get rid of a
> dozen files or so. Anyway, unless there are objections in the next 72 hours
> I will assume lazy consensus and move forward in that direction.
>
>
>
> On Mon, Jun 26, 2017 at 10:24 AM, Stephen Mallette <spmalle...@gmail.com>
> wrote:
>
>> Just wanted to note that Gryo 3.0 work is happening here in case anyone
>> wants to follow along:
>>
>> https://issues.apache.org/jira/browse/TINKERPOP-1698
>>
>> I have a branch setup. I think I'm going to clean up Gremlin Server
>> configuration files for 3.3.0 and remove a bunch of the old serializers.
>> The config is starting to look really confusing. I think it would be best
>> to just have Gryo and GraphSON 3.0 configured in the packaged sample files.
>>
>>
>> On Tue, Jun 20, 2017 at 8:25 AM, Stephen Mallette <spmalle...@gmail.com>
>> wrote:
>>
>>> I'd really like to get our IO situation really solid in 3.3.0 and while
>>> we talk about GraphSON a lot I think Gryo still has an important place in
>>> our serialization story. Gryo covers an extended set of classes that goes
>>> beyond what we cover in GraphSON. I don't know if all those registered
>>> classes matter though - one would think that we just need parity with
>>> GraphSON defined classes.
>>>
>>> https://github.com/apache/tinkerpop/blob/9f13e69853c03a2fde7
>>> 7efd40c6526b91a4b346a/gremlin-core/src/main/java/org/apache/
>>> tinkerpop/gremlin/structure/io/gryo/GryoVersion.java#L192
>>>
>>> I think that the reason this area of code has grown so much is from the
>>> basis of another issue with gryo which is that we don't always have a nice
>>> separation between implementations and serialized classes. In other words,
>>> if we have some complex class like DefaultTraversalMetrics, we just
>>> register all the classes that DefaultTraversalMetrics has as fields (and
>>> all the classes those classes use) until the serialization works. While
>>> this is really easy and, in a sense, convenient, it creates some problems:
>>>
>>> 1. We get this big long registration list which includes types we don't
>>> support in GraphSON (which typically aren't tested)
>>> 2. We have now bound the serialization of the complex class to its
>>> structure. If there is a problem with DefaultTraversalMetrics in the future
>>> and we have to change a field we essentially break all compatibility within
>>> gryo. (i'm facing this issue now actually).
>>>
>>> I would really like Gryo 3.0 to do a better job in this area, allowing
>>> for better forward and backward compatibility with a more limited class
>>> registration list that is more in line with the types defined for  GraphSON
>>> support. I think we can get better forward/backward compatibility if (1)
>>> there is better separation between the object being serialized and the
>>> object used in application logic (think of the "detached" classes) and (2)
>>> gryo serializers for 3.0 have greater intelligence around internal
>>> compatibility handling.
>>>
>>> Anyway, I was mostly writing this as notes to myself in preparation for
>>> 3.3.0, but I'd be happy to hear any thoughts anyone might have on this.
>>>
>>
>>
>

Reply via email to