nexus 掛掉啟動報錯解決


nexus:3.13.01

nexus啟動日志:

./nexus run   (注意nexus start是看不到日志的)

 

問題:

nexus由於內存溢出掛掉,重新啟動報錯  Error injecting constructor, java.nio.file.FileAlreadyExistsException: /data/nexus/sonatype-work/nexus3/elasticsearch/nexus/nodes/0/__es__.tmp

 

 

問題分析:

查看nexus的ES版本;在ES的源碼中通過關鍵字__es__.tmp找到了相關源碼,如下所示:

 

 ensureAtomicMoveSupported方法是在ES啟動時初始化GatewayMetaState對象時調用的,從方法注釋可以看出這個方法是為了測試ES運行環境中是否支原子性地移動一個文件。測試的方法就是,先創建一個名為__es__.tmp的文件,在將其移動到名為__es__.final的文件,如果這個操作成功,說明支持,如果報異常說明不支持。測試結束后會通過調用Files.deleteIfExists(src);Files.deleteIfExists(target);將__es__.tmp 與__es__.final這兩個文件都刪除。

在看我們的報錯

 

 


顯然報這個錯是因為ensureAtomicMoveSupported方法方法試圖創建__es__.tmp的時候他已經存在了。至於為什么存在這個文件,我的推測是,上次ES啟動過程中在__es__.tmp創建到刪除這段時間,ES進程被強制殺死導致__es__.tmp沒有被刪除。

解決方法

解決這個異常的方法很容易想到,那就是手動把__es__.tmp刪除,再重啟NEXUS即可。

另外,需要說明的是ES的開發者已經意識到這個缺陷,並且將其在5.x版本中修復。

 

 參考連接:https://blog.csdn.net/qqqq0199181/article/details/87935519

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM