我在对Neo4j执行并发写操作时偶尔遇到500内部服务器错误。查询示例如下。
MATCH (u1:User {id:{id1}})
MATCH (u2:User {id:{id2}})
MERGE (u1)-[:FOLLOWS]->(u2)
如果是非常受欢迎的用户,您可以体验u2
节点的大量并发关系创建。
在我明确处理DeadlockDetectedException
并且有一个重试逻辑的时候。但是我不时会从服务器获得500以及下面的响应主体。
<html>
<head><title>500 Internal Server Error</title></head>
<body bgcolor="white">
<center><h1>500 Internal Server Error</h1></center>
<hr><center>nginx</center>
</body>
</html>
这让我不知道服务器上发生了什么。如果我处理它并执行重试,一切都按预期工作。但这看起来很狡猾,因为我基本上猜测在这种特殊情况下发生的死锁可能是错误的,与实际的服务器错误无关。
答案 0 :(得分:0)
此问题与我们的ngnix box配置有关,该配置在某些情况下提供了通用500,而不是传播DeadlockDetectedException
。