解决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
解决com.mongodb.MongoException$CursorNotFound: cursor 0 not found on server的更多相关文章
- com.mongodb.MongoException$CursorNotFound: cursor not found on server异常处理
		
java链接MongoDB处理大量数据时经常碰到cursor not found 的异常,其实是超时所致 Exception in thread "main" com.mongod ...
 - src/github.com/mongodb/mongo-go-driver/mongo/cursor.go    游标的简洁实用
		
src/github.com/mongodb/mongo-go-driver/mongo/cursor.go // Copyright (C) MongoDB, Inc. 2017-present./ ...
 - 无法解决“Microsoft.SharePoint.Security, Version=15.0.0.0,”与“Microsoft.SharePoint.Security, Version=14.0.0.0”之间的冲突
		
VisualStudio 2013创建控制台项目,.NetFramework选为4.5.生成目标平台:x64.然后添加对Microsoft.SharePoint.dll的引用. 生成项目时," ...
 - 解决Unsupported major.minor version 51.0错误
		
解决Unsupported major.minor version 51.0错误使用jdk6运行项目时发生了Unsupported major.minor version 51.0错误.经过网上搜索发 ...
 - 解决Nginx的connect() to 127.0.0.1:8080 failed (13: Permission denied) while connect
		
在进行Nginx+Tomcat 负载均衡的时候遇到了这个权限问题,在error.log日志中.我们能够看到例如以下: connect() to 127.0.0.1:8080 failed (13: P ...
 - 《转》CentOS7 安装MongoDB 3.0server   (3.0的优势)
		
1.下载&安装 MongoDB 3.0 正式版本号公布!这标志着 MongoDB 数据库进入了一个全新的发展阶段,提供强大.灵活并且易于管理的数据库管理系统.MongoDB宣称.3.0新版本号 ...
 - redhat 9.0安装完不能上网解决办法(补) - 并附上redhat9.0 下载链接
		
昨天一位网友Q我,说我的开发环境搭建教程按步骤最后上不了网怎么解决我才突然想起9.0版本在VM7,8中存在问题,于是今天我就简单说下解决的方法. 由于本人习惯使用redhat 9.0版本所以到现在还是 ...
 - 解决CentOS 7安装zabbix 3.0 无法启动zabbix-server的问题[segfault at 18 ip 00007f78842b4bd0 sp 00007fff1995a818 error 4 in libpthread-2.17.so[7f78842ab000+16000]]
		
解决CentOS 7安装zabbix 3.0 无法启动zabbix-server的问题 [root@localhost sbin]# service zabbix-server start Redir ...
 - axios解决跨域问题(vue-cli3.0)
		
一.什么是跨域 1.跨域 指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制. 2.同源策略 是指协议,域名,端口都要相同,其中有一个不同都 ...
 
随机推荐
- ios 更改全局UINavigationBar的背景图片以及通知栏颜色
			
1.更改UINavigationController push 到另一个界面返回按钮的title self.navigationController.navigationBar.topItem.bac ...
 - ios unrecognized selector sent to instance出现的原因和解决方案
			
概述:造成unrecognized selector sent to instance iphone,大部分情况下是因为对象被提前release了,在你心里不希望他release的情况下,指针还在,对 ...
 - JAVA学习基础知识总结(原创)
			
(未经博主允许,禁止转载!) 一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平 ...
 - Jmeter性能测试实践之java请求
			
前言 Apache Jmeter是开源.易用的性能测试工具,之前工作中用过几次对http请求进行性能测试,对jmeter的基本操作有一些了解.最近接到开发的对java请求进行性能测试的需求,所以需要 ...
 - Linux Git服务器安装
			
① 安装 Git ② 服务器端创建 git 用户,用来管理 Git 服务,并为 git 用户设置密码 ③ 服务器端创建 Git 仓库 ④ 客户端 clone 远程仓库 ⑤ 客户端创建 SSH 公钥和私 ...
 - mysql : show processlist 详解
			
最近排查一些MySQL的问题,会经常用到 show processlist,所以在这里把这个命令总结一下,做个备忘,以备不时只需. 首先是几条常用的SQL. 1.按客户端 IP 分组,看哪个客户端的链 ...
 - django的framework优化
			
1.优化framework的性能,解决restapi调用慢的问题 ①预加载,关联查询时做缓存,序列化前简单调用setup_eager_loading ,这个需要确定sql查询调用情况(根据数据库结构确 ...
 - sort与sorted的区别及实例
			
描述 我们需要对List进行排序,Python提供了两个方法对给定的List L进行排序 : 方法1.用对List的成员函数sort进行排序方法2.用内置函数sorted进行排序(从2.4开始) so ...
 - centos Linux系统日常管理1  cpuinfo cpu核数   命令 w, vmstat, uptime ,top ,kill ,ps ,free,netstat ,sar, ulimit ,lsof ,pidof 第十四节课
			
centos Linux系统日常管理1 cpuinfo cpu核数 命令 w, vmstat, uptime ,top ,kill ,ps ,free,netstat ,sar, ulimit ...
 - git-【四】撤销修改和删除文件操作
			
一:撤销修改: 比如我现在在readme.txt文件里面增加一行 内容为555555555555,我们先通过命令查看如下: 在未提交之前,发现添加5555555555555内容有误,所以得马上恢复以前 ...