为什么我结束了java.lang.IllegalArgumentException异常的卡斯巴/ J

2019-08-01 13:31发布

我使用的是看到一个奇怪的问题casbah / java driver.

我一直运行到以下异常当司机试图创建从蒙戈的回应:


  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)
        ...

这似乎随​​意地发生,即使在蒙戈不应该返回从查询任何结果的情况下。 报告的大小不一致,通常的方式大于它应该还是可以。

我猜这可能是某种形式的响应腐败。 我有困难的时候,让使用Wireshark的头或这个问题的尾巴,但我一直发现请求/响应链,从而达到其响应抛出这个错误“TCP窗口全部”响应来自未来的MongoDB查询:

我使用的版本:

 Casbah: 2.1.5.0 Mongo Java Driver: 2.5.3 MongoDB: 2.2 

我会非常感激,如果任何人都可以给什么我可以潜在地做错了任何意见或就如何进一步调试这个问题的任何指针

更新:在看的发行说明后Casbah 2.1.5.0,看来该Java驱动程序正在使用的版本是2.5.3,2.7.3不

Answer 1:

您正在使用的Java驱动程序的版本与MongoDB的2.2兼容。 你应该至少使用2.9.3,如果不是2.10或更高版本。 谁也不能保证一个驱动程序升级将解决你的问题,但它应该是第一步。

https://support.mongolab.com/entries/22631012-which-drivers-support-mongodb-2-2



Answer 2:

你有多大的JSON对象? 看看是否能大对象由MongoDB的版本所支持。



文章来源: Why do I end up with java.lang.IllegalArgumentException for Casbah / Java MongoDB Driver?