¿Por qué acabo con java.lang.IllegalArgumentException para Casbah/Java MongoDB Driver?
mongodb-java (2)
¿Qué tan grande es tu objeto JSON? Vea si ese gran objeto es compatible con la versión de mongodb.
Estoy viendo un problema extraño con el casbah / java driver.
Me sigo encontrando con la siguiente excepción cuando el controlador intenta crear una respuesta de 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)
...
Esto parece estar sucediendo al azar, incluso en los casos en que mongo no debería devolver ningún resultado de la consulta. El tamaño informado es inconsistente y normalmente mucho más grande de lo que debería o podría ser.
Supongo que esta es probablemente una forma de corrupción con la respuesta. He tenido dificultades para entender este problema usando Wireshark, pero de forma consistente encuentro que la cadena de solicitud / respuesta que conduce a la consulta cuya respuesta arroja este error tiene la respuesta "TCP Window Full" proveniente de MongoDB:
Las versiones que estoy usando:
Casbah: 2.1.5.0
Mongo Java Driver: 2.5.3
MongoDB: 2.2
Le agradecería mucho si alguien pudiera darme algún consejo sobre lo que potencialmente podría estar haciendo mal o cualquier sugerencia sobre cómo depurar aún más este problema
ACTUALIZACIÓN: después de mirar las notas de la versión de Casbah 2.1.5.0,
parece que la versión del controlador de Java que se utiliza es 2.5.3, no 2.7.3
La versión del controlador de Java que está utilizando no es compatible con MongoDB 2.2. Debería usar al menos 2.9.3, si no es 2.10 o superior. No hay garantía de que una actualización del controlador resuelva su problema, pero debería ser un primer paso.
https://support.mongolab.com/entries/22631012-which-drivers-support-mongodb-2-2