MongoDB: Получение предупреждения "Client Cursor :: yield не может разблокировать ч/б рекурсивной блокировки" при использовании findAndModify в двух экземплярах процесса
Я использую: MongoDB 1.6.4, Python 2.6.6, PyMongo 1.9, Ubuntu 10.10
Я получаю предупреждение "Client Cursor :: yield не может разблокировать b/c рекурсивной блокировки" в моих журналах очень часто при использовании findAndModify в двух экземплярах процесса. При использовании только одного процесса предупреждение не появляется.
Как я могу это исправить?
** Обновление 8 марта 2013 г. **
Есть ли решение этой проблемы на данный момент?
Ответы
Ответ 1
Это обычно означает, что вы отсутствуете индексы в полях, используемых в запросе.
Я не знаю технических деталей этого но из моего опыта добавления индекс в поле запроса. проверить у вас есть индекс по полям, которые используются в запросить часть findAndModify. также запускается db.collection.find(). объяснить() чтобы проверить, использует ли он индекс.
Благодаря pingw33n, которые помогают решить этот вопрос.
Ответ 2
Монголы говорят, что вы можете игнорировать это предупреждение - см. поток . Он имеет дело с двумя процессами, пытающимися получить доступ к мьютексу (следовательно, вы видите его только с несколькими экземплярами процесса)
Мы определенно знаем об этой проблеме - мы обсуждаем лучший способ для обработки этих сообщений. Ложные записи журнала должны быть устранены в новом выпуске очень скоро.
Относительно ответа @Creotiv. Да, если что-то медленное - 90% времени, когда вам не хватает индекса