neo4j-gremlin-bolt,Tinkergraph和Neo4j-gremlin之间的行为不同

时间:2017-04-06 15:44:45

标签: neo4j tinkerpop3 neo4j-bolt

我在Tinkerpop3的neo4j-gremlin-bolt Neo4j实现中看到了Tinkergraph和Neo4j-gremlin之间的不同行为,特别是在这段代码中:

// different Tinkerpop impls
Graph graph = new Neo4JGraph(driver, vertexIdProvider, edgeIdProvider);
// Graph graph = Neo4jGraph.open("C:\\tmp\neo");
// Graph graph = TinkerGraph.open();

GraphTraversalSource g = graph.traversal();

String label = "Person";

for (int i = 0; i < 10; i++) {
  System.out.println("Before " + +g.V().toList().size());
  graph.addVertex(label);
  System.out.println("After " + +g.V().toList().size());
}

// if graph is transactional
 graph.tx().commit();

我所期待的是顶点计数从1增加到10,这是我在Tinkergraph和Neo4j-gremlin中看到的。我用neo4j-gremlin-bolt看到的是计数总是1(在第一个AddVertex之后)。提交后,Neo4J数据库中出现了10个实例(如预期的那样)。再次运行它,计数总是11(在第一个addVertex之后),并且在提交之后出现20个实例。

我用neo4j-gremlin-bolt按预期工作的唯一方法是在每个addVertex之后提交()并关闭()图形,这似乎不正确。

这似乎是基本行为,所以我认为我遗漏了一些明显的东西。

neo4j-gremlin-bolt - v0.2.18

tinkergraph-gremlin - v3.2.4

neo4j-gremlin - v3.2.4

1 个答案:

答案 0 :(得分:0)

原来是neo4j-gremlin-bolt处理瞬态对象的错误: https://github.com/SteelBridgeLabs/neo4j-gremlin-bolt/issues/52

很快就会修复。