2012-06-04 4 views
0

Успех работы cron, успешно работавшей в течение многих лет, внезапно начал умирать после завершения 80%. Не уверен, что это потому, что коллекция с результатами постоянно росла и достигла определенного критического размера (для меня это не так уж и много) или по любой другой причине. Я не уверен, как отлаживать это, я нашел пользователя, у которого работа умерла и попыталась выполнить задание для этого пользователя, получила сообщение CURSOR_NOTFOUND через 2 часа. Вчера он умер через 3 часа работы для всех пользователей. Я все еще использую старый mongoid (2.0.0.beta) из-за множественных зависимостей и нехватки времени, чтобы изменить его, но mongo обновлен (я знаю об ошибке в versions before 1.1.2).CURSOR_NOT_FOUND - мои задания cron начали умирать посредине

Я нашел два похожих вопроса, но ни один из них не применим. В this case они использовали Mopped, который не был готов к производству. И here проблема была в разбивке на страницы.

Я получаю сообщение об ошибке

MONGODB cursor.refresh() for cursor xxxxxxxxx 
rake aborted! 
Query response returned CURSOR_NOT_FOUND. Either an invalid cursor was specified, or the cursor may have timed out on the server. 

Любые предложения?

+0

Убедитесь, что вы отключаетесь от Mongo, если вы разворачиваете детей. – d11wtq

+0

Спасибо! Я все еще отлаживаю это, но все предложения очень полезны. – Tyra

ответ

2

Ошибка «курсора не найдена» от MongoDB, как правило, указывает на то, что курсор был отключен (через 10 минут бездействия), но он потенциально может указывать на то, что код клиента запутался и использует устаревший или закрытый курсор или как-то повредил курсор. Если в течение 3-х часового времени было задействовано много времени на клиенте между вызовами в MongoDB, это может дать серверу время для выключения курсора.

Вы можете указать опцию no-timeout на курсоре, чтобы узнать, является ли это таймаутом вашего курсора, который вызывает вашу проблему.

Смежные вопросы