1

私は gridFS を使用していますが、ファイルを書き込んだ後に表示されます。すぐに読み取りを行って見つけようとすると、mongoDB は実行時例外をスローしますが、断続的です。

それを引き起こすJavaコードは次のとおりです。

List<GridFSDBFile> files = PlayJongo.gridfs().find(filename);

GridFS クラスのドライバーの関連コードは次のとおりです。

/**
 * finds a list of files matching the given query
 * @param query
 * @param sort
 * @return
 * @throws MongoException 
 */
public List<GridFSDBFile> find( DBObject query , DBObject sort){
    List<GridFSDBFile> files = new ArrayList<GridFSDBFile>();

    DBCursor c = null;
    try {
        c = _filesCollection.find( query );
        if (sort != null) {
            c.sort(sort);
        }
        while ( c.hasNext() ){
            files.add( _fix( c.next() ) );
        }
    } finally {
         if (c != null){
             c.close();
         }
    }
    return files;
}

protected GridFSDBFile _fix( Object o ){
    if ( o == null )
        return null;

    if ( ! ( o instanceof GridFSDBFile ) )
        throw new RuntimeException( "somehow didn't get a GridFSDBFile" );

    GridFSDBFile f = (GridFSDBFile)o;
    f._fs = this;
    return f;
}

私は遊びを使っています!2.1 は Jongo ラッパーを使用していますが、mongodb の Java ドライバーを使用して直接 gridFS にアクセスしているため、影響はありません。

奇妙なのは、実際に必要なデータがオブジェクトにあるよりもデバッグする場合ですが、ドライバーが期待しているオブジェクトではありません。

ここに画像の説明を入力

誰もこれに遭遇したことがありますか?

4

2 に答える 2

1

答えを見つけました。jongo api を使用して fs.files コレクションにアクセスすると、mongoDB ドライバーを直接使用した場合でも、gridFS ファイル システムへのアクセスが中断されます。

パッチが発行されましたが、まだリリースに統合されていません

パッチ: https://github.com/bguerout/jongo/commit/0d27ba3ebfd065e7bf4ad323ee21059b762b512e

于 2013-07-09T21:15:19.677 に答える
0

このバグ修正の詳細:

  1. fs.files.find() の前に「fs.files」コレクションの状態を保存します。

    クラス保存 = fs.files.getObjectClass();

  2. 後で状態を復元する

    fs.files.setObjectClass(保存)

于 2014-08-09T23:29:12.707 に答える