41

を使用すると奇妙な問題が発生します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 であることがわかります。

4

2 に答える 2

3

使用しているJavaドライバーのバージョンは、MongoDB2.2と互換性がありません。2.10以上ではないにしても、少なくとも2.9.3を使用する必要があります。ドライバーのアップグレードで問題が解決する保証はありませんが、それが最初のステップになるはずです。

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

于 2013-01-05T08:48:03.513 に答える
1

JSON オブジェクトの大きさは? そのビッグ オブジェクトが mongodb のバージョンでサポートされているかどうかを確認します。

于 2013-01-01T07:28:37.707 に答える