因果集群。交易终止后,数据不在图表中

时间:2017-01-27 13:14:38

标签: java session neo4j transactions neo4j-bolt

我们正在使用Neo4j企业版进行因果聚类。有3个核心节点和3个副本节点。

是否有必要明确关闭Session以使数据在neo4j数据库中可见。我在每个会话中创建接近20K的事务(每个事务创建一个节点),每个事务显式调用success();

我观察到,除非会话终止,否则数据在Neo4J图形(浏览器)和Neo4j shell中都不可见。

我做错了吗?我希望由于每个事务都显式地跟着success()方法,所以我应该能够在事务中返回success()后立即查看数据。

在提交Graph中的所有交易数据之前,Neo4J(bolt Driver)是否等待会话完成?所有这些交易都是与之前或即将进行的交易无关的独立交易吗?

请开心。

2 个答案:

答案 0 :(得分:0)

看起来交易没有在块try catch中自动关闭。

您可以在不关闭会话的情况下手动关闭交易:[https://neo4j.com/docs/java-reference/current/javadocs/org/neo4j/graphdb/Transaction.html#close--]:

 Transaction tx = graphDb.beginTx();
 try
 {
     // operations on the graph
     // ...

     tx.success();
 }
 finally
 {
     tx.close();
 }

答案 1 :(得分:0)

Transaction.close()执行实际的提交或回滚操作,具体取决于先前是否在同一事务中调用了success()failure()(如果两者都未被调用,则失败是默认值)。 / p>

如果在您致电Session.close()时交易仍处于活动状态,它将为您关闭交易(每个会话最多可以有一次活动)。但是您不必关闭会话来执行实际提交或回滚 - 您可以直接自己关闭当前事务。之后,如果需要,您可以使用相同的会话来创建新事务。 (此外,您可以同时拥有多个会话。)