是否可以强制neo4j事务超时?

时间:2015-11-16 22:30:35

标签: performance transactions neo4j

这可能是用于访问某些Neo4j数据的典型Java 7样板。

是否存在任何机制,您可以根据超时将事务设置为自动失败和回滚?

try (Transaction tx = graphdb.beginTx()) {
    Node node = // Get some Nodes ...
    Iterable<Relationship> rels = node.getRelationships(...);
    for (Relationship rel : rels) {
        // Oh no! This is a super-node with a billion Relationships!
    }
    tx.success();
    return data;
} 

我想只有int count = 0并递增每次迭代,然后:

if(count > XYZ) throw TakingTooLongException(count)

1 个答案:

答案 0 :(得分:1)

您也可以在循环之前预先检查node.getDegree(),这是密集节点的固定时间操作,而是所有其他节点的小计数器(&lt; 50 rels)。

否则还有一个执行警卫,但我不确定它会存活多久。

您可以在不调用tx.success()的情况下从tx返回,它应该回滚。