2015-10-19 75 views
0

所以我剛剛建立了一個HA環境,我有一個主服務器和一個使用Neo4J嵌入式應用程序的實例與該羣集通話。如果兩個數據庫的狀態都是相同的,那麼一切似乎都有效。Neo4J HA與Neo4J Spatial

但是,如果我從我的從實例中刪除所有數據,並讓它加入集羣,我希望集羣中的數據能夠傳播到從實例中。相反,我看到的是Neo4J空間的錯誤。我的應用程序中有Neo4J空間,服務器插件安裝在主服務器端。

堆棧跟蹤我得到的一個例子:

2015-10-19 15:10:27.096+0000 ERROR [org.neo4j]: Exception when stopping [email protected] org.neo4j.gis.spatial.indexprovider.SpatialIndexImplementation.stop()V java.lang.AbstractMethodError: org.neo4j.gis.spatial.indexprovider.SpatialIndexImplementation.stop()V at org.neo4j.kernel.lifecycle.Lifecycles$1.stop(Lifecycles.java:55) at org.neo4j.kernel.lifecycle.Lifecycle$Delegate.stop(Lifecycle.java:75) at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.stop(LifeSupport.java:527) at org.neo4j.kernel.lifecycle.LifeSupport.stop(LifeSupport.java:155) at org.neo4j.kernel.lifecycle.LifeSupport.shutdown(LifeSupport.java:185) at org.neo4j.kernel.NeoStoreDataSource.stop(NeoStoreDataSource.java:1160) at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.stop(LifeSupport.java:527) at org.neo4j.kernel.lifecycle.LifeSupport.stop(LifeSupport.java:155) at org.neo4j.kernel.impl.transaction.state.DataSourceManager.stop(DataSourceManager.java:137) at org.neo4j.kernel.ha.cluster.SwitchToSlave.stopServicesAndHandleBranchedStore(SwitchToSlave.java:521) at org.neo4j.kernel.ha.cluster.SwitchToSlave.checkDataConsistency(SwitchToSlave.java:357) at org.neo4j.kernel.ha.cluster.SwitchToSlave.executeConsistencyChecks(SwitchToSlave.java:316) at org.neo4j.kernel.ha.cluster.SwitchToSlave.switchToSlave(SwitchToSlave.java:219) at org.neo4j.kernel.ha.cluster.HighAvailabilityModeSwitcher$2.run(HighAvailabilityModeSwitcher.java:328) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) at org.neo4j.helpers.NamedThreadFactory$2.run(NamedThreadFactory.java:99) 2015-10-19 15:10:27.102+0000 ERROR [org.neo4j]: Lifecycle exception Failed to transition component '[email protected]' from STOPPED to SHUTTING_DOWN. Please see attached cause exception org.neo4j.kernel.lifecycle.LifecycleException: Failed to transition component '[email protected]' from STOPPED to SHUTTING_DOWN. Please see attached cause exception at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.shutdown(LifeSupport.java:559) at org.neo4j.kernel.lifecycle.LifeSupport.shutdown(LifeSupport.java:200) at org.neo4j.kernel.NeoStoreDataSource.stop(NeoStoreDataSource.java:1160) at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.stop(LifeSupport.java:527) at org.neo4j.kernel.lifecycle.LifeSupport.stop(LifeSupport.java:155) at org.neo4j.kernel.impl.transaction.state.DataSourceManager.stop(DataSourceManager.java:137) at org.neo4j.kernel.ha.cluster.SwitchToSlave.stopServicesAndHandleBranchedStore(SwitchToSlave.java:521) at org.neo4j.kernel.ha.cluster.SwitchToSlave.checkDataConsistency(SwitchToSlave.java:357) at org.neo4j.kernel.ha.cluster.SwitchToSlave.executeConsistencyChecks(SwitchToSlave.java:316) at org.neo4j.kernel.ha.cluster.SwitchToSlave.switchToSlave(SwitchToSlave.java:219) at org.neo4j.kernel.ha.cluster.HighAvailabilityModeSwitcher$2.run(HighAvailabilityModeSwitcher.java:328) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) at org.neo4j.helpers.NamedThreadFactory$2.run(NamedThreadFactory.java:99) Caused by: java.lang.AbstractMethodError: org.neo4j.gis.spatial.indexprovider.SpatialIndexImplementation.shutdown()V at org.neo4j.kernel.lifecycle.Lifecycles$1.shutdown(Lifecycles.java:64) at org.neo4j.kernel.lifecycle.Lifecycle$Delegate.shutdown(Lifecycle.java:81) at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.shutdown(LifeSupport.java:555) ... 18 more 2015-10-19 15:10:27.103+0000 ERROR [org.neo4j]: Chained lifecycle exception Component '[email protected]' failed to stop. Please see attached cause exception. org.neo4j.kernel.lifecycle.LifecycleException: Component '[email protected]' failed to stop. Please see attached cause exception. at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.stop(LifeSupport.java:532) at org.neo4j.kernel.lifecycle.LifeSupport.stop(LifeSupport.java:155) at org.neo4j.kernel.lifecycle.LifeSupport.shutdown(LifeSupport.java:185) at org.neo4j.kernel.NeoStoreDataSource.stop(NeoStoreDataSource.java:1160) at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.stop(LifeSupport.java:527) at org.neo4j.kernel.lifecycle.LifeSupport.stop(LifeSupport.java:155) at org.neo4j.kernel.impl.transaction.state.DataSourceManager.stop(DataSourceManager.java:137) at org.neo4j.kernel.ha.cluster.SwitchToSlave.stopServicesAndHandleBranchedStore(SwitchToSlave.java:521) at org.neo4j.kernel.ha.cluster.SwitchToSlave.checkDataConsistency(SwitchToSlave.java:357) at org.neo4j.kernel.ha.cluster.SwitchToSlave.executeConsistencyChecks(SwitchToSlave.java:316) at org.neo4j.kernel.ha.cluster.SwitchToSlave.switchToSlave(SwitchToSlave.java:219) at org.neo4j.kernel.ha.cluster.HighAvailabilityModeSwitcher$2.run(HighAvailabilityModeSwitcher.java:328) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) at org.neo4j.helpers.NamedThreadFactory$2.run(NamedThreadFactory.java:99) Caused by: java.lang.AbstractMethodError: org.neo4j.gis.spatial.indexprovider.SpatialIndexImplementation.stop()V at org.neo4j.kernel.lifecycle.Lifecycles$1.stop(Lifecycles.java:55) at org.neo4j.kernel.lifecycle.Lifecycle$Delegate.stop(Lifecycle.java:75) at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.stop(LifeSupport.java:527) ... 19 more

跨實例確實Neo4j的空間支持複製?或者更具體地說,將空間索引恢復爲第一次加入集羣的新空實例?

+0

這看起來像是一個版本問題。請確保您是Neo4j版本和Spatial擴展版本。 –

+0

所以我使用neo4j 2.2.5和neo4j空間版本0.14-neo4j-2.2.3。我試圖把0.14-neo4j-2.2.5空間放在master和我的應用程序中,但是我得到了同樣的錯誤。這隻有當我有一個空的應用程序加入一個現有的羣集。如果主機和從機都是空的,或者主機和從機都有相同的數據庫,它似乎工作得很好。 – lordmj

+0

我猜這是值得提出的Neo4j空間這個問題:https://github.com/neo4j-contrib/spatial/issues/new –

回答

0

將Neo4j空間更新到版本0.15-neo4j-2.2.6可修復此問題。所以你需要使用Neo4j 2.2.6才能正確複製空間索引