您的位置:首页 > 数据库 > Mongodb

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

2015-10-21 17:12 627 查看

背景

经常需要执行脚本调用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: