Neo4j 2.3.1未释放导入文件上的句柄

Neo4j 2.3.1未释放导入文件上的句柄,neo4j,Neo4j,在使用Java 8.45在Windows Server 2012 R2上从Neo4j 2.2.5升级到Neo4j 2.3.1后,我们遇到了文件句柄问题。当使用web界面或neo4jshell.bat运行本文底部显示的命令时,cypher成功完成,并且进程监视器跟踪确认Java成功关闭了该文件。但是,我无法移动该csv文件,因为该文件已在另一个进程中打开。Handle.exe确认Java在该文件上仍然具有读写句柄 当我在具有相同文件的同一台机器上对Neo4j 2.2.5图形运行相同的进程时,Jav

在使用Java 8.45在Windows Server 2012 R2上从Neo4j 2.2.5升级到Neo4j 2.3.1后,我们遇到了文件句柄问题。当使用web界面或neo4jshell.bat运行本文底部显示的命令时,cypher成功完成,并且进程监视器跟踪确认Java成功关闭了该文件。但是,我无法移动该csv文件,因为该文件已在另一个进程中打开。Handle.exe确认Java在该文件上仍然具有读写句柄

当我在具有相同文件的同一台机器上对Neo4j 2.2.5图形运行相同的进程时,Java不会保留csv文件的读写句柄。在解决此问题之前,我们需要恢复到2.2.5。我们在从2.2.5升级到2.3.1期间所做的唯一应用程序更改是适应新的文件引用格式(file:///x://filename.csv vs.file:x:/filename.csv)

除了重新启动服务或停止并启动驱动器以强制Java关闭此文件之外,我们还可以采取其他措施吗?我知道Neo4jShell.bat不赞成使用powershell命令,但最终的问题是Java保留了文件句柄,因此更改传递cypher命令的方法无法改进Java处理csv文件的方式。我在web界面和neoj4shell.bat上运行了相同的密码,得到了相同的结果

USING PERIODIC COMMIT 3000
LOAD CSV WITH HEADERS
FROM "file:///x://filename.csv"
AS line
MATCH (a:node {id : line.id}), (b:othernode {id : line.other_id})
WITH a, b
WHERE shortestPath((a)-[:PREVIOUS]->(b)) is null
CREATE (a)-[:PREVIOUS]->(b);

它是否也会在没有定期提交的情况下发生?当您只加载文件并
返回计数(*)
Hi-Michael时,我在没有定期提交的情况下运行,并用返回计数(*)替换了create,并遇到了同样的问题。有趣的是,这个问题会间歇性地发生,但一旦Java获得读写句柄,它就不会释放它,除非我停止Java或重置驱动器。我获取了Java昨天成功发布的一个文件,今天再次尝试,得到了Java保留读写句柄的相同行为。因此,无论是文件内容、提交密码的方法,还是命令是否包含create或return,都不能解释为什么Java在某些文件上保留句柄。更新:问题仍然存在于Neo4j 2.3.3中,在没有定期提交的情况下也会发生吗?当您只加载文件并
返回计数(*)
Hi-Michael时,我在没有定期提交的情况下运行,并用返回计数(*)替换了create,并遇到了同样的问题。有趣的是,这个问题会间歇性地发生,但一旦Java获得读写句柄,它就不会释放它,除非我停止Java或重置驱动器。我获取了Java昨天成功发布的一个文件,今天再次尝试,得到了Java保留读写句柄的相同行为。因此,无论是文件内容、提交密码的方法,还是命令是否包含create或return,都不能解释为什么Java在某些文件上保留句柄