Исключение AutoReconnect «Мастер изменился»

Проблемы с пониманием правильного подхода.

У меня есть соединение с набором реплик mongodb с тремя участниками (стандартный главный-подчиненный-подчиненный). Все работает нормально с подключением, когда мастер остается постоянным.

pymongo.Connection(['host1:27017','host2:27018','host3:27019']).database_test

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

Теперь я понимаю, что это исключение нужно перехватывать и обрабатывать, скорее всего, ожидая выбора нового основного сервера.Проблема, с которой я столкнулся, по-видимому, заключается в том, что ему вообще все равно, когда выбран новый первичный элемент. Это исключение «мастер изменился» продолжает появляться.

Печать соединения с __ dict __ показывает все три хоста.

Я попытался передать набор реплик kwarg в соединение, но это оказалось неожиданным аргументом.

Есть ли причина, по которой такое соединение не запускает запросы к новому первичному серверу?

РЕДАКТИРОВАТЬ:

Эта же проблема, по-видимому, теперь проявляется на сервере развертывания. Исключение autoreconnect генерируется, если мастер вообще изменяется, и никогда не исчезает даже после выбора нового основного.

Pymongo - это версия 2.2 и mongodb версии 2.0.2. Изменение способа определения соединения в коде pymongo (монгури или список хостов) не имеет никакого эффекта. Единственный способ оживить службу - это rs.stepDown () другие хосты, пока исходный мастер снова не станет основным.

38
задан Bill the Lizard 18 June 2012 в 12:48
поделиться