解决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

时间: 2024-10-26 14:54:23

解决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.mongodb.MongoException$CursorNotFound: cursor not found on server at com.mongodb.DBApiLayer$Result.init(DBApiLayer.java:379) at com.mongodb.DBApiLayer$Result._ad

MongoDB { code: 18, ok: 0.0, errmsg: "auth fails" } 原因

MongoDB出现 { code: 18, ok: 0.0, errmsg: "auth fails" }  错误的原因: 1.账号密码错误 2.账号不属于该数据库 MongoDB { code: 18, ok: 0.0, errmsg: "auth fails" } 原因,布布扣,bubuko.com

有关百度一键分享链接到微信朋友圈无法打开网页,报404错误的解决办法,from=timeline&isappinstalled=0,和伪静态规则有关

最近有好友反映用百度一键分享,分享网页链接到微信朋友圈的时候,发现链接无法打开,提示无法找到该页404错误,同样分享到QQ.微博等链接 能正常访问,这么明显的错误,百度和腾讯应该不会忽略吧. 接报后,我专门分析了一遍他公司的网站,确实是微信朋友圈无法分享网站链接.但是通过微信扫一扫能正常浏览网页,点击分享到朋友圈后,在  从朋友圈去访问的时候,提示无法找到该页,报404错误. 经反复检测,排除了分享代码的问题,和服务器配置问题.我开始怀疑伪静态规则,开启URL重写造成的,我关掉了伪静态,让网页形

《转》CentOS7 安装MongoDB 3.0server (3.0的优势)

1.下载&安装 MongoDB 3.0 正式版本号公布!这标志着 MongoDB 数据库进入了一个全新的发展阶段,提供强大.灵活并且易于管理的数据库管理系统.MongoDB宣称.3.0新版本号不仅仅提升7到10倍的写入效率以及添加80%的数据压缩率.还能降低95%的运维成本. MongoDB 3.0主要新特性包含: ·可插入式的存储引擎 API ·支持 WiredTiger 存储引擎 ·MMAPv1 提升 ·复制集全面提升 ·集群方面的改进 ·提升了安全性 ·工具的提升 WiredTiger 存

解决Nginx的connect() to 127.0.0.1:8080,selinux

在进行Nginx+Tomcat 负载均衡的时候遇到了这个权限问题,在error.log日志中,我们可以看到如下: connect() to 127.0.0.1:8080 failed (13: Permission denied) while connecting to upstream, 经过一番检查以及google,应该是SeLinux的导致的.可以选择一些两种方式进行: getenforce    查看selinux状态 setenforce 0    (将selinux设置成Permis

解决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: Permission denied) while connecting to upstream, 经过一番检查以及google,应该是SeLinux的导致的.可以选择一些两种方式进行: 1.关闭SeLinux,可以查看以下文章: CentOS下查看SeLinux状态及关闭SeLinux 2.执行下面的命令

无法解决“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的引用. 生成项目时,"错误列表"报告了如下警告: 发现同一依赖程序集的不同版本间存在冲突.请将项目文件中的"AutoGenerateBindingRedirects"属性设置为 true.有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=294190

Centos 7.0 下安装 Zabbix server 服务器的安装及 监控主机的加入(1)

一.本系列分为6部分 1.Centos 7.0 下安装 Zabbix server 服务器的安装及 监控主机的加入 2.Centos 6.5 下安装 Zabbix server 服务器的安装及 监控主机的加入 3.zabbix server的Discover功能,实现zabbix agent 大批量的自动添加,并链接到指定的模版 4.zabbix 报警方式之 邮件报警 5.zabbix 报警方式之 微信公众号报警 6.zabbix server 端的优化工作(解决mysql 性能下降,以及zab

(转) 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

原文地址: http://www.cnblogs.com/lyhabc/p/4682986.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第三篇,这一篇才真正开始搭建AlwaysOn,前两篇是为搭建AlwaysOn 做准备的 步骤 这一篇依然使用step by step的方式介绍怎麽搭建AlwaysOn 请先使用本地用户Administrator登录这两个集群节点并执行下面的操作,先不要用域用户DCADMIN登录 1.两个集群节点都需先安装.NET Framework