41 votes

Pourquoi est-ce que je me retrouve avec une exception java.lang.IllegalArgumentException pour le pilote Casbah / Java MongoDB?

Je vais voir un étrange problème à l'aide de l' casbah / java driver.

- Je continuer à courir dans l'exception suivante lorsque le conducteur tente de créer une réponse 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)
        ...

Cela semble être le cas au hasard, même dans les cas où mongo ne devrait pas être de retour les résultats de la requête. La taille indiquée est incohérent et, normalement, de façon plus large que ce qu'elle devrait ou pourrait être.

Je suppose que ce est probablement une forme de corruption de la réponse. J'ai eu un moment difficile de fabriquer des têtes ou queues de ce problème à l'aide de Wireshark, mais je trouve toujours que la demande/réponse de la chaîne menant à la requête dont la réponse génère cette erreur a "de la Fenêtre TCP Complète" réponse en provenance de MongoDB:

enter image description here

Les versions que j'utilise:


 Casbah: 2.1.5.0
 Mongo Java Driver: 2.5.3
 MongoDB: 2.2

Je serais très reconnaissante si quelqu'un pouvait donner des conseils sur ce que je peut éventuellement être fait mal ou tous les pointeurs sur la façon de corriger de cette question

Mise à JOUR: Après avoir regardé les notes de version pour Casbah 2.1.5.0, il semble que la version de java pilote utilisé est 2.5.3, pas 2.7.3

3voto

jared Points 1586

La version du pilote Java que vous utilisez n'est pas compatible avec MongoDB 2.2. Vous devriez utiliser au moins 2.9.3, sinon 2.10 ou plus. Rien ne garantit qu'une mise à niveau de pilote corrigera votre problème, mais cela devrait être une première étape.

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

1voto

Prateek Points 342

Quelle est la taille de votre objet JSON? Voir si ce gros objet est supporté par la version de mongodb.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X