【发布时间】:2016-03-10 12:44:40
【问题描述】:
我在对 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>
这让我不知道服务器上发生了什么。如果我处理它并执行重试,一切都会按预期工作。但这看起来很狡猾,因为我基本上猜测在这种特殊情况下发生了死锁,这可能是错误的并且与实际的服务器错误无关。
【问题讨论】:
-
奇怪的是你从 nginx 得到了一个 html 响应。它是来自 neo4j 的真正 http 响应吗?
-
@christophe-willemsen 我正在使用 .net Neo4Client 作为驱动程序。我的理解(来自客户端来源)这个 html 作为来自 neo4j 的 http 响应原因短语返回。
标签: neo4j graph-databases neo4jclient nosql