apache tinkerpop logo

TinkerPop Upgrade Information

This document helps users of TinkerPop to understand the changes that come with each software release. It outlines new features, how to resolve breaking changes and other information specific to a release. This document is useful to end-users who are building applications on TinkerPop, but it is equally useful to TinkerPop providers, who build libraries and other systems on the the core APIs and protocols that TinkerPop exposes.

These providers include:

TinkerPop 3.0.0

gremlin hindu

A Gremlin Rāga in 7/16 Time

TinkerPop 3.0.2

Release Date: NOT OFFICIALLY RELEASED YET

Important Changes

  • TinkerGraph can now be configured to support persistence, where TinkerGraph will try to load a graph from a specified location and calls to close() will save the graph data to that location.

  • There were a number of fixes to gremlin-driver that prevent protocol desynchronization when talking to Gremlin Server.

  • The Gremlin Server sub-protocol introduces a new "close" operation to explicitly close sessions.

  • BulkLoaderVertexProgram does now support arbitrary inputs (besides the HadoopGraph, which was already supported in version 3.0.1, BulkLoaderVertexProgram can now also read from any TP3 enabled graph, like TinkerGraph or Neo4jGraph).

Please see the changelog for a complete list of all the modifications that are part of this release.

Upgrading for Users

Aside from learning about new features, users should not expect to find any changes in this release that will cause compile errors or other problems during upgrade.

Upgrading for Providers

Graph Driver Providers

Gremlin Server close Operation

It is important to note that this feature of the sub-protocol applies to the SessionOpProcessor (i.e. for session-based requests). Prior to this change, there was no way to explicitly close a session. Sessions would get closed by the server after timeout of activity. This new "op" gives drivers the ability to close the session explicitly and as needed.

See TINKERPOP3-849 and the documentation for more information.

TinkerPop 3.0.1

Release Date: September 2, 2015

Important Changes

  • Gremlin Server now supports a SASL-based (Simple Authentication and Security Layer) authentication model and a default SimpleAuthenticator which implements the PLAIN SASL mechanism (i.e. plain text) to authenticate requests. This gives Gremlin Server some basic security capabilities, especially when combined with its built-in SSL feature.

  • Gremlin Server now allows for a Map of values that can be returned from initialization scripts. That Map will be used to set global bindings for the server. See this sample script for an example.

  • The Neo4j plugin should now install properly on Windows operating systems.

  • For those who are interested in writing documentation for TinkerPop, there is now a --dryRun option that can be supplied to the bin/process-docs.sh command. This command is useful in that it does not pre-process the documentation and execute the code samples within. That step is time-intensive and therefore the --dryRun option can save a lot of time when editing the documentation, especially if there are only text or formatting changes to test.

Please see the changelog for a complete list of all the modifications that are part of this release.

Upgrading for Users

Aside from learning about new features, users should not expect to find any changes in this release that will cause compile errors or other problems during upgrade.

Upgrading for Providers

Graph System Providers

GraphFactoryClass Annotation

Providers can consider the use of the new GraphFactoryClass annotation to specify the factory class that GraphFactory will use to open a new Graph instance. This is an optional feature and will generally help implementations that have an interface extending Graph. If that is the case, then this annotation can be used in the following fashion:

@GraphFactory(MyGraphFactory.class)
public interface MyGraph extends Graph{
}

MyGraphFactory must contain the static open method that is normally expected by GraphFactory.

See TINKERPOP3-778 for more information.

GraphProvider.Descriptor Annotation

There was a change that affected providers who implemented GraphComputer related tests such as the ProcessComputerSuite. If the provider runs those tests, then edit the GraphProvider implementation for those suites to include the GraphProvider.Descriptor annotation as follows:

@GraphProvider.Descriptor(computer = GiraphGraphComputer.class)
public final class HadoopGiraphGraphProvider extends HadoopGraphProvider {

    public GraphTraversalSource traversal(final Graph graph) {
        return GraphTraversalSource.build().engine(ComputerTraversalEngine.build().computer(GiraphGraphComputer.class)).create(graph);
    }
}

See TINKERPOP3-690 for more information.

Semantics of Transaction.close()

There were some adjustments to the test suite with respect to how Transaction.close() was being validated. For most providers, this will generally mean checking OptOut annotations for test renaming problems. The error that occurs when running the test suite should make it apparent that a test name is incorrect in an OptOut if there are issues there.

See TINKERPOP3-764 for more information.

Graph Driver Providers

Authentication

Gremlin Server now supports SASL-based authentication. By default, Gremlin Server is not configured with authentication turned on and authentication is not required, so existing drivers should still work without any additional change. Drivers should however consider implementing this feature as it is likely that many users will want the security capabilities that it provides.

Please read more about how to implement authentication here.