2013-07-18 29 views
2

我們在嵌入模式下運行Neo4j的v1.9.1(最新穩定版本)。我們遇到了一些意外關閉進程並且沒有調用neo4j.shutdown()的情況。 注意:發生這種情況時,我們知道neoDB沒有未完成的更新或更改。這也是在Linux操作系統上。Neo4j啓動在恢復數據庫時掛起

當應用程序再次啓動時,它啓動與neo4j的連接,它開始恢復過程,但永久掛起。該messages.log文件顯示:

2013-07-17 21:05:09.143+0000 INFO [o.n.k.i.t.x.XaLogicalLog]: XaResourceManager[nioneo_logical.log] recovery completed. 
2013-07-17 21:05:09.143+0000 INFO [o.n.k.i.t.x.XaLogicalLog]: Recovery on log [/opt/pricing/data/database/app/nioneo_logical.log.1] completed. 
2013-07-17 21:05:09.156+0000 INFO [o.n.k.i.t.TxManager]: TM opening log: /opt/pricing/data/database/app/tm_tx_log.2 
2013-07-17 21:05:09.245+0000 INFO [o.n.b.BackupServer]: BackupServer communication server started and bound to /0.0.0.0:6362 
2013-07-17 21:05:09.271+0000 INFO [o.n.k.i.t.x.XaLogicalLog]: Non clean shutdown detected on log [/opt/pricing/data/database/app/index/lucene.log.2]. Recovery started ... 
2013-07-17 21:05:09.271+0000 INFO [o.n.k.i.t.x.XaLogicalLog]: [/opt/pricing/data/database/app/index/lucene.log.2] logVersion=3 with committed tx=317 

什麼是最有趣的,我們複製的DB到桌面,並創建了一個剛剛起步的數據庫,然後將其關閉一個小程序並運行它反對DB。它僅僅在幾秒鐘內就恢復了沒有問題(這可能是因爲掛起進程部分恢復了數據庫,但我們不這麼認爲,因爲如果我們終止並嘗試再次運行它,應用程序會恢復數據庫)我們在linux機器上重複了這一點,獲得了相同的成功結果。

我們正在嘗試確保在應用程序意外終止時始終調用shutdown,但真正的問題是爲什麼啓動時恢復過程掛起? 我們確實找到了以下的https://groups.google.com/forum/#!msg/neo4j/CBvuMybTRFw/NMIOpBjrIYIJ,但是會談到將數據庫作爲服務器運行並增加超時。雖然messages.log中的點與我的位置完全相同。

作爲臨時解決方案,如果恢復掛起,我們可以運行一個小的「虛擬」程序來查看數據庫是否會得到修復,但寧可找到根本原因。

有沒有人有任何建議?

+0

我碰到同樣的問題 - http://stackoverflow.com/questions/31624582/effectively-clear-neo4j-database – alexanoid

回答

0

當你說它掛起時,CPU /內存/磁盤會做什麼?一切安靜嗎?

此外,如果你做一個jstack或配置文件或類似的JVM做恢復什麼是「主」線程呢?

提供這些問題的答案會有很大的幫助。