只读事务的第一次请求

时间:2017-01-20 07:04:58

标签: java neo4j transactions spring-data-neo4j-4 neo4j-ogm

我正在使用:

  • 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 )< / LI>
  • POST ... / db / data / transaction / 1 {“statements”:[{“statement”:“request3”} ...]}(X-WRITE: false )< / LI>
  • ...

问题是第一个请求包含带有“true”值的X_WRITE标头。下一个请求正确地具有带有'false'值的标头。

因此第一个请求总是发送到我的主节点,我无法在从节点上发送下一个请求,因为事务中的所有请求都必须发送到同一个neo4j节点。

看看neo4j-ogm源代码,似乎可能是由于HttpDriver.readOnly()方法在getCurrentTransaction()为null时返回false。

1 个答案:

答案 0 :(得分:0)

这绝对是OGM HTTP驱动程序中的一个错误。请在此处提出错误:https://github.com/neo4j/neo4j-ogm/issues