を使用すると奇妙な問題が発生します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
私が間違っている可能性があることや、この問題をさらにデバッグする方法について何かアドバイスをいただければ幸いです。
更新:リリース ノートを見ると、Casbah 2.1.5.0,
使用されている Java ドライバーのバージョンは 2.7.3 ではなく 2.5.3 であることがわかります。