首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >中断运行Cypher查询的线程会导致异常

中断运行Cypher查询的线程会导致异常
EN

Stack Overflow用户
提问于 2014-01-21 16:15:06
回答 2查看 553关注 0票数 1

我有一些任务是在它们自己的线程中运行的,每个任务都执行一个方法,该方法包装了一个Cypher查询,该查询收集一些统计信息并更新一些节点。

该方法被标记为@Transactional (使用Spring)

每个线程执行相同的查询,开始时使用不同的节点id param。

现在,偶尔会出现一些线程“挂起”或执行时间过长的情况,我希望能够中断它们。

因此,我使用Executors.newSingleThreadScheduledExecutor()编写了一个类,以便在某个超时之后安排一个cancel()。正在发生的是,我得到了各种各样的异常,事务相关的。App日志

org.neo4j.kernel.impl.nioneo.store.UnderlyingStorageException:无法加载position3822 @34398 由: java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:184) ~na:1.6.0_65 : java.nio.channels.ClosedByInterruptException: null引起的无法标记1P-提交4的逻辑日志引起的

Neo4j版本是1.9.5嵌入式的,运行在Mac上有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-21 23:48:34

打断线程不是个好主意。Esp。奇怪的事情发生了。

我认为在Neo4j中使用内置机制更好。

Stefan Armbruster写了一个关于如何使用“卫士”机制来停止长时间运行的密码查询的博客,请参见这里:

http://blog.armbruster-it.de/2013/09/some-experiments-with-ratpack-and-neo4j/

查看“终止查询”部分和代码。

票数 2
EN

Stack Overflow用户

发布于 2015-02-17 22:36:20

测试用例和解决方法

我在github上制造了一个问题,只是为了看看矩阵小组对此有什么看法。到目前为止,我非常喜欢Neo4j,但这对我来说是个真正的问题。

https://github.com/neo4j/neo4j/issues/3977#issuecomment-74735972

我不喜欢保护解决方案,因为更多的原因,所以我写了一个小线程类,这解决了中断的问题。它不能完全解决长期运行的查询问题,因为它将继续在后台运行,但您的代码不会等待它完成。我已经测试了几天了,感觉很有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21263446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档