我使用时看到一个奇怪的问题casbah / java driver.
当驱动程序尝试从 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 Window Full”响应:
我正在使用的版本:
Casbah: 2.1.5.0
Mongo Java Driver: 2.5.3
MongoDB: 2.2
您使用的 Java 驱动程序版本与 MongoDB 2.2 不兼容。如果不是 2.10 或更高版本,则至少应使用 2.9.3。不能保证驱动程序升级可以解决您的问题,但这应该是第一步。
https://support.mongolab.com/entries/22631012-which-drivers-support-mongodb-2-2 https://support.mongolab.com/entries/22631012-which-drivers-support-mongodb-2-2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)