Исключение автоматического переподключения "мастер изменился" - PullRequest
38 голосов
/ 14 декабря 2011

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

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

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

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

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

При печати соединения с __dict__ отображаются все три хоста.

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

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

EDIT:

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

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

1 Ответ

2 голосов
/ 19 октября 2012

Поведение, которое вы описываете, является ошибкой.Лучшее из возможных действий - убедиться в том, что в нем зафиксирована ошибка, и дать ссылку на нее из своего вопроса.Поскольку этому вопросу почти год, я ожидаю, что ошибка будет закрыта (проверьте jira.mongodb.org/browse/SERVER-4405, чтобы узнать, применимо ли это).позже проблема должна исчезнуть.

...