【发布时间】:2017-01-20 07:04:57
【问题描述】:
我正在使用:
- spring-data-neo4j 4.2.0.BUILD-SNAPSHOT
- neo4j-ogm 2.1.1
- neo4j 3.0.8
并且我遇到了由 neo4j-ogm 设置的 X-Write HTTP 标头问题。
在写入事务时,它被正确设置。
但我遇到了只读事务问题。我在只读事务中多次调用 neo4j:
- POST .../db/data/transaction {"statements":[{"statement":"request1"}...]} (X-WRITE: true)
- POST .../db/data/transaction/1 {"statements":[{"statement":"request2"}...]} (X-WRITE: false)
- POST .../db/data/transaction/1 {"statements":[{"statement":"request3"}...]} (X-WRITE: false)
- ...
问题在于第一个请求包含具有“true”值的 X_WRITE 标头。下一个请求正确地具有带有 'false' 值的标头。
所以第一个请求总是发送到我的主节点,而我无法在从节点上发送下一个请求,因为事务中的所有请求都必须发送到同一个 neo4j 节点。强>
查看 neo4j-ogm 源代码,似乎可能是由于 HttpDriver.readOnly() 方法在 getCurrentTransaction() 为 null 时返回 false。
【问题讨论】:
标签: java neo4j transactions spring-data-neo4j-4 neo4j-ogm