解決com.mongodb.MongoException$CursorNotFound: cursor 0 not found on server


背景

    經常需要執行腳本調用Java程序讀取mongodb中數據,本來是轉為后台進程、偶爾看看日志的簡單任務。今天發現程序拋出異常“com.mongodb.MongoException$CursorNotFound: cursor 0 not found on server”。一開始沒在意,重新執行也可以繼續跑,但是過一段時間又拋出同樣錯誤,看來要戰斗了。

分析

    在mogondb.org官網,我找到了同樣的問題,這是一個2013年就發現並解決的問題,官方回應這一BUG,並且已經在版本(2.11.0 release)中解決了。異常原因是游標超時

      例外:或許在涉及oplog的操作中,還是會有問題,請參考:https://jira.mongodb.org/browse/JAVA-771

解決

  •  方案1:更新mongodb類庫至2.11.0以上。

  •  方案2:如果我們不能更新mogondb的類庫的話,也可以通過設置超時參數來解決,如下:

    cursor.addOption(com.mongodb.Bytes.QUERYOPTION_NOTIMEOUT);

參考

    cursor not found on server:https://jira.mongodb.org/browse/JAVA-907

    Repeated CursorNotFound exceptions on long-running process following oplog:https://jira.mongodb.org/browse/JAVA-771


免責聲明!

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



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