Neo4j-ogm X-Write header HA 管理
Neo4j-ogm X-Write header management for HA
我正在使用:
- spring-data-neo4j 4.2.0.BUILD-SNAPSHOT
- neo4j-ogm 2.1.0-快照
- neo4j 3.0.7
和我在使用由 neo4j-ogm 设置的新 X-Write HTTP header 时遇到问题。
我们在 HAProxy 配置中使用此 header 将写入事务重定向到主 neo4j 节点。
我们的 spring-data-neo4j 写入事务正在对 neo4j 进行多次调用:
- POST .../db/data/transaction/1 {"statements":[{"statement":"request1"}...]}
- POST .../db/data/transaction/1 {"statements":[{"statement":"request2"}...]}
- POST .../db/data/transaction/1/提交
所有 HTTP REST 调用都正确包含 X-WRITE header、 除了最后一次提交事务的调用似乎不包含此 header.所以这个调用有时会发送到一个从节点,那里的交易不存在。
这是 neo4j-ogm 中的错误吗?
是的,这是一个错误而且是一个愚蠢的错误。我已经为它开了一张票。 https://github.com/neo4j/neo4j-ogm/issues/299。
我会在这里更新答案,并在完成后在票证上更新。
这已通过 https://github.com/neo4j/neo4j-ogm/pull/300 在 neo4j-ogm 2.1.1-SNAPSHOT
中修复。
X-WRITE
现在应该出现在 commit/rollback 上的 header 中。
我正在使用:
- spring-data-neo4j 4.2.0.BUILD-SNAPSHOT
- neo4j-ogm 2.1.0-快照
- neo4j 3.0.7
和我在使用由 neo4j-ogm 设置的新 X-Write HTTP header 时遇到问题。
我们在 HAProxy 配置中使用此 header 将写入事务重定向到主 neo4j 节点。
我们的 spring-data-neo4j 写入事务正在对 neo4j 进行多次调用:
- POST .../db/data/transaction/1 {"statements":[{"statement":"request1"}...]}
- POST .../db/data/transaction/1 {"statements":[{"statement":"request2"}...]}
- POST .../db/data/transaction/1/提交
所有 HTTP REST 调用都正确包含 X-WRITE header、 除了最后一次提交事务的调用似乎不包含此 header.所以这个调用有时会发送到一个从节点,那里的交易不存在。
这是 neo4j-ogm 中的错误吗?
是的,这是一个错误而且是一个愚蠢的错误。我已经为它开了一张票。 https://github.com/neo4j/neo4j-ogm/issues/299。
我会在这里更新答案,并在完成后在票证上更新。
这已通过 https://github.com/neo4j/neo4j-ogm/pull/300 在 neo4j-ogm 2.1.1-SNAPSHOT
中修复。
X-WRITE
现在应该出现在 commit/rollback 上的 header 中。