The message serializer classes for Gremlin Server already have a notion like this, so the pattern has already been explored a bit in that context within the TinkerPop code base.
https://github.com/apache/incubator-tinkerpop/blob/809da22648067d178b114d9afbdeb5ffbf44ed9e/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV1d0.java Note that it uses V1d0 as a naming pattern, so to apply that to GraphTraversal, you'd end up with GraphTraversalV3d0 (the assumption here is that we would see breaks in the patch release so no need for an additional "d0"). What are the implications for tests if we look to support this backward compatibility (which, on the surface sounds good to me)? On Mon, Oct 5, 2015 at 10:45 AM, Marko Rodriguez <[email protected]> wrote: > Hello R-Pop-Tik-e, > > Matt Frantz and I have been going back and forth on the following ticket: > > https://issues.apache.org/jira/browse/TINKERPOP3-866 > > This idea was spawned because Kuppitz and I were trying to figure out if > we could get rid of GroupCountStep and replace it with a parameterized > version of GroupStep. > > A short review of the argument is provided below (MENTORS: the full > argument is in JIRA in the URL above (which also went to dev@ as JIRA > comments/tickets email dev@)). > 1. GroupStep (3.0.1) uses a collection prior to reduction. > 2. This is inefficient as we waste memory holding data in a > collection. > 3. This gets especially nasty in OLAP when you can get some > massive data growth. > 4. Lets make GroupStep use lazy evaluators. > 5. Done. Damn -- its not backwards compatible. > 6. More sucky, we can't just have a @Deprecated method. > > Matt had a nice idea (MENTORS: again this idea is in JIRA). What about > making GraphTraversal30 be a thing that always exists for each version. > Thus, people who can't so easily upgrade to can still stick with > GraphTraversal30. > > The question becomes, how is this expressed (MENTORS: This is lightly in > JIRA but I bring it up here in more depth): > > g = graph.traversal(GraphTraversal30.build().create()) > OR > > gremlin.graph.traversal.default=org.apache.tinkerpop.process.traversal.dsl.graph30.GraphTraversal30 > > Please reply to JIRA with your thoughts on how we can accomplish this > (MENTORS: people will reply to JIRA with their thoughts, however, > fortunately all JIRA comments/tickets go to dev@). > https://issues.apache.org/jira/browse/TINKERPOP3-866 > > Thank you very much for your time, > Marko. > > http://markorodriguez.com > >
