写入多节点群集时Neo4J InvalidEpochException

时间:2014-07-16 01:25:14

标签: azure neo4j

我有一个Neo4J企业集群,其中有6个节点(1个主节点和5个从节点)托管在我正在测试应用程序的单独的Linux(CentOS 6.4)虚拟机中。 VM托管在Azure中。我有一个对象,使用简单的循环法技术管理所有6个节点之间的连接。我注意到,在写入从属节点时,messages.log文件中会多次出现以下错误消息:

ERROR [o.n.k.h.c.m.MasterServer]: Could not finish off dead channel
org.neo4j.kernel.ha.com.master.InvalidEpochException: Invalid epoch 282880438682249,
correct epoch is 282880443056723 at 
org.neo4j.kernel.ha.com.master.MasterImpl.assertCorrectEpoch(MasterImpl.java:218) ~
[neo4j-ha-2.1.2.jar:2.1.2]
    at org.neo4j.kernel.ha.com.master.MasterImpl.finishTransaction(MasterImpl.java:363)
      ~[neo4j-ha-2.1.2.jar:2.1.2]
    at 
    org.neo4j.kernel.ha.com.master.MasterServer.finishOffChannel(MasterServer.java:70)  
    ~[neo4j-ha-2.1.2.jar:2.1.2]
    at org.neo4j.com.Server.tryToFinishOffChannel(Server.java:411) ~[neo4j-com 2.1.2.jar:2.1.2]
    at org.neo4j.com.Server$4.run(Server.java:589) [neo4j-com-2.1.2.jar:2.1.2]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_60]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_60]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_60]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_60]
    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_60]

我不知所措。为什么会出现此错误?发生此错误时,写入失败。我让服务器通过NTP同步他们的时间。写入Neo4J的应用程序是使用Neo4JClient库的.Net应用程序。感谢您提供任何指导。

阿米尔。

1 个答案:

答案 0 :(得分:0)

当主服务器正在提交事务时发生主服务器时,可能会发生InvalidEpochException。意外主开关的主要原因是GC暂停时间过长,比集群超时设置长。

因此,您需要分析GC行为并优化它们或调整群集超时设置。