解决com.mongodb.MongoException$CursorNotFound: cursor 0 not found on server
2015-10-21 17:20
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-907Repeated CursorNotFound exceptions on long-running process following oplog:https://jira.mongodb.org/browse/JAVA-771
相关文章推荐
- 解决com.mongodb.MongoException$CursorNotFound: cursor 0 not found on server
- Mongodb存储过程使用
- centos6.5 配置mongodb3
- MongoDB在windows服务器安装部署及远程连接MongoDB
- MongoDB基本操作命令
- MongoDB可以歇菜了吗
- mongo启动异常-mongodb exception in initAndListen: 7026old lock file, terminating
- MongoDB基本使用
- MongoDB分片搭建
- MongoDB增删改查
- mongodb数据文件格式(二)
- [置顶] MongoDB中的分组聚合在java中的用法
- MongoDB基本使用
- MongoDB Replica Sets + Sharding 方案 及 chunks块 和 片键分析
- 修复MongoDB数据库,解决因Unclean Shutdown导致服务不能启动的问题
- Node.js+Express4.x+mongodb3.x做Web开发时的Session处理
- MongoDB 更新的简单使用
- MongoDB数据库用户名和密码的设置
- MongoDB 基本操作详解
- 在C#中使用官方驱动操作MongoDB