Gavin Cowley Gavin Cowley - 5 months ago 20
Scala Question

What version data store does Gremlin create when creating a Neo4j database from the console?

Im running Gremlin v 3.2.5, and I keep getting errors when i try to connect to a Neo4j database from the Gremlin console, or using the neo4j-gremlin API:

Failed to start Neo4j with an older data store version. To enable automatic upgrade, please set configuration parameter "allow_store_upgrade=true"


I create the Neo4j database using the neo4j-java-driver 1.4.3, and neo4j 3.2.3, like so in scala:

val graphDb = new GraphDatabaseFactory().newEmbeddedDatabaseBuilder(new File(dbPath))
.setConfig(GraphDatabaseSettings.allow_store_upgrade, "true").newGraphDatabase()


or in the Gremlin console

gremlin> conf = new BaseConfiguration()
gremlin> conf.setProperty(Neo4jGraph.CONFIG_CONF + "dbms.allow_format_migration", "true")
gremlin> g = Neo4jGraph.open(conf)


So I would like to know what version datastore Gremlin uses because it doesn't seem to matter how I make the DB, I get errors like the one above. I believe my version of Neo4j creates a datastore v0.A.8, and the only thing I haven't tried, which may work, is downgrading my version of Neo4j. Thanks in advance for any Ideas/feedback!

*edit: gave wrong version number of neo4j-java-driver, added neo4j version

Answer Source

tldr; Apache TinkerPop 3.2.5 is tested to work with Neo4j 2.3.3.

It's worth noting that there is no direct or default dependency on Neo4j for Apache TinkerPop, given the GPL licensing of Neo4j which conflicts with the Apache license. So there is a bit of indirection involved in determining the version to deal with. Technically, TinkerPop leaves it to the user to choose the version of Neo4j to use by selecting a version of neo4j-tinkerpop-api-impl:

https://github.com/neo4j-contrib/neo4j-tinkerpop-api-impl

that is compatible with the version of neo4j-tinkerpop-api

https://github.com/neo4j-contrib/neo4j-tinkerpop-api

that is used with the version of TinkerPop that you are using. In the case of 3.2.5, that would be:

https://github.com/apache/tinkerpop/blob/3.2.5/neo4j-gremlin/pom.xml#L41

While you are technically free to choose a version of neo4j-tinkerpop-api-impl it's worth noting that TinkerPop 3.2.5 is only tested against 0.3-2.3.3 which is hooked to Neo4j 2.3.3:

https://github.com/neo4j-contrib/neo4j-tinkerpop-api-impl/blob/0.3-2.3.3/pom.xml#L23