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:
-
Graph System Provider
-
Graph Database Provider
-
Graph Processor Provider
-
-
Graph Driver Provider
-
Graph Language Provider
TinkerPop 3.0.0
A Gremlin Rāga in 7/16 Time
TinkerPop 3.0.2
Release Date: October 19, 2015
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 theHadoopGraph
, which was already supported in version 3.0.1,BulkLoaderVertexProgram
can now also read from any TP3 enabled graph, likeTinkerGraph
orNeo4jGraph
).
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 thePLAIN
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. ThatMap
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 thebin/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.