2011-01-21 3 views
15

私は使用しています: MongoDB 1.6.4、Python 2.6.6、PyMongo 1.9、 Ubuntu 10.10MongoDB:2つのプロセスインスタンスでfindAndModifyを使用すると、「クライアントカーソル:: yieldは再帰ロックのb/cをロック解除できません」という警告が表示されます

「クライアントカーソル:: yieldは再帰ロックのb/cをロック解除できません」 2つのプロセスインスタンスでfindAndModifyを使用すると、非常に頻繁にログに警告が表示されます。 1つのプロセスのみを使用すると警告が表示されません。

どうすればこの問題を解決できますか?

* アップデート2013年3月8日*

今のようにこの問題に対する修正はありますか?

+2

これは通常、クエリで使用されるフィールドにインデックスがないことを意味します。 – pingw33n

+0

しかし、私はソートを使用していません。または結果がページングされる場合、私はインデックスを作成する必要がありますか? –

+4

私はこの警告の技術的な詳細はわかりませんが、私の経験からクエリフィールドにインデックスを追加すると役立ちます。 findAndModifyのクエリ部分で使用されたフィールドにインデックスがあることを確認してください。 'db.collection.find().explain()'を実行して、インデックスを使用するかどうかを確認してください。 – pingw33n

答えて

22

これは通常、クエリで使用されるフィールドのインデックスが でないことを意味します。

私はこの 警告の技術的な詳細はわかりませんが、質問フィールドに インデックスを追加すると、私の経験から助けてくれます。 を確認してください。 のfindAndModifyのクエリ部分で使用されているフィールドにインデックスがあります。 db.collection.find()。() を使ってインデックスを使用しているかどうかを確認してください。

pingw33nのおかげでこの質問が解決されます。

+0

ありがとうございます。私の場合、これを解決するためには[複合インデックス](http://docs.mongodb.org/manual/core/index-compound/)が必要でした。 –

2

モンゴーの人々は、この警告を無視することができます - threadを参照してください。これは、ミューテックスにアクセスしようとしている2つのプロセス(したがって、あなたが唯一のマルチプロセス・インスタンスでそれを参照してください)

我々は間違いなく問題を認識しているを扱って - 私たちは行くそれらのメッセージを処理するための最良の方法 を議論しています前方に偽のログエントリ は、新しいリリースですぐに削除する必要があります。

@Creotivの回答については、ええ、何かが遅い場合 - インデックスが欠落している時間の90%

関連する問題