【发布时间】:2015-08-03 23:25:08
【问题描述】:
我正在使用如下所示的 CYPHER(使用 Neo4j 2.2.3,通过事务密码 REST 端点)以原子方式读取和增加节点上的计数器属性:
MATCH node WHERE id(node)={nodeId}
SET node.counter=COALESCE(node.counter,0) + 1
RETURN node.counter
我有多个线程发布这样的 REST 帖子,我现在看到两个线程返回相同的计数器值的情况。
此行为类似于此处描述的从 2.1 到 2.2 的可能回归:Neo4j 2.2 Cypher locking regression?
但是,之前有人建议这在 CYPHER 中是不可能的(请参阅此处的 cmets:https://stackoverflow.com/a/18486645)......甚至更早之前它似乎是可能的(请参阅:https://stackoverflow.com/a/18450171)
当有多个并发的 REST POST 查询时,是否有一个类似于上面的 CYPHER 查询能够可靠地产生唯一的(单调递增的)计数器值?
【问题讨论】:
标签: multithreading rest neo4j cypher