我从 JS neo4j-driver 4.4.1 同时触发了数百个下面提到的查询(也同步尝试)。很少有查询,有时会在 nodejs 中引发以下错误。但是,当我的重试逻辑在某个时间后重试时,它会起作用。
询问
MERGE (n0:Movie {movie_id: $movie_id})
WITH n0
CALL apoc.lock.nodes([n0])
CALL {
WITH n0
WITH n0 WHERE n0.updated_at IS NULL OR n0.updated_at < datetime($updated_at)
MERGE (n:Movie {movie_id: $movie_id})
ON CREATE SET n.movie_id = $movie_id
SET n.name = $name
SET n.downloads = $downloads
SET n.updated_at = datetime($updated_at)
RETURN count(*) AS cnt
}
RETURN n0, cnt
我在单独的事务中运行此查询,如下所示。
const session = driver.session();
await session.writeTransaction(async tx => {
return await tx.run(QUERY, {args});
});
记录 Neo4jError: Cannot run query in this transaction,因为它已因错误或显式终止而回滚。
我在 neo4j 日志中找不到与该查询相关的任何跟踪。
有什么帮助吗?