Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我最终会得到Casbah/java MongoDB驱动程序的java.lang.IllegalArgumentException?_Java_Mongodb_Mongodb Java_Casbah - Fatal编程技术网

为什么我最终会得到Casbah/java MongoDB驱动程序的java.lang.IllegalArgumentException?

为什么我最终会得到Casbah/java MongoDB驱动程序的java.lang.IllegalArgumentException?,java,mongodb,mongodb-java,casbah,Java,Mongodb,Mongodb Java,Casbah,我在使用casbah/java驱动程序时发现了一个奇怪的问题。 当驱动程序试图从mongo创建响应时,我一直遇到以下异常: Oct 16, 2012 10:45:07 AM com.mongodb.DBTCPConnector$MyPort error SEVERE: MyPort.error called java.lang.IllegalArgumentException: response too long: 1634610484 at com.mongodb.Res

我在使用
casbah/java驱动程序时发现了一个奇怪的问题。

当驱动程序试图从mongo创建响应时,我一直遇到以下异常:


  Oct 16, 2012 10:45:07 AM com.mongodb.DBTCPConnector$MyPort error
  SEVERE: MyPort.error called
  java.lang.IllegalArgumentException: response too long: 1634610484
    at com.mongodb.Response.(Response.java:40)
    at com.mongodb.DBPort.go(DBPort.java:110)
    at com.mongodb.DBPort.go(DBPort.java:75)
    at com.mongodb.DBPort.call(DBPort.java:65)
    at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:201)
    at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:295)
    at com.mongodb.DBCursor._check(DBCursor.java:354)
    at com.mongodb.DBCursor._hasNext(DBCursor.java:484)
    at com.mongodb.DBCursor.hasNext(DBCursor.java:509)
    at com.mongodb.casbah.MongoCursorBase$class.hasNext(MongoCursor.scala:73)
    at com.mongodb.casbah.MongoCursor.hasNext(MongoCursor.scala:497)
    at scala.collection.Iterator$class.foreach(Iterator.scala:660)
    at com.mongodb.casbah.MongoCursor.foreach(MongoCursor.scala:497)
        ...
这似乎是随机发生的,即使mongo不应该从查询中返回任何结果。报告的大小不一致,通常比应该或可能的大

我猜这可能是某种形式的腐败。我在使用Wireshark了解这个问题时遇到了困难,但我始终发现,导致响应抛出此错误的查询的请求/响应链具有来自MongoDB的“TCP窗口已满”响应:

我正在使用的版本:


卡斯巴:2.1.5.0
Mongo Java驱动程序:2.5.3
MongoDB:2.2

如果有人能就我可能犯的错误给出任何建议,或者就如何进一步调试这个问题给出任何建议,我将不胜感激


更新:在查看了
Casbah 2.1.5.0的发行说明后,
似乎使用的java驱动程序版本是2.5.3,而不是2.7.3

您的JSON对象有多大?查看mongodb版本是否支持该大对象。

您使用的Java驱动程序版本与mongodb 2.2不兼容。如果不是2.10或更高版本,您应该至少使用2.9.3。无法保证驱动程序升级会解决您的问题,但这应该是第一步


我相信MongoDB的Java驱动程序的当前版本是2.9.1。你可以检查一下,你写了很多东西吗?(插入或更新)如果是,您使用的是什么级别的writeConcern?问题代码是:
如果(\u len>(32*1024*1024))抛出新的IllegalArgumentException(“响应太长:+\u len”)
其中_len是从服务器发送的响应的前四个字节。因此,要么是网络损坏,要么是服务器或驱动程序中的错误。服务器日志中有什么内容吗?2.9.0是该驱动程序的当前稳定版本,(2.9.1)[.2.9.2将包含修复程序,应在本周晚些时候发布。您能否在本周将驱动程序升级到2.9.0或2.9.2?

 Casbah: 2.1.5.0
 Mongo Java Driver: 2.5.3
 MongoDB: 2.2