KeyError: 'pop from empty set' при подключении к набору реплик Mongodb (мотор, pymongo, Tornado)
Я подключаюсь к набору реплик из 3 узлов, выполняющему mongoDB, следующим образом:
DB = motor.MotorReplicaSetConnection("mongodb://user:pass@ip_address:27017", replicaSet='repl_set_name').open_sync().collection_name
Мой набор реплик хорошо работает, когда ПЕРВИЧНЫЙ выключается, другой вступает во владение. Но когда я делаю это, мой сервер Tornado выдает KeyError: 'pop from an empty set'
ошибка при повторном подключении. Похоже, что Tornado/Motor не может подключиться к новому первичному узлу, я не знаю почему. Даже если я добавлю / заменим host:port в строке подключения, я все равно не получу никаких результатов. Будет ли это связано с read_preference
?
1 ответ
LR и я отлаживали это в частном порядке, я думаю, что странное сообщение об ошибке является следствием этой ошибки Tornado:
https://github.com/facebook/tornado/issues/651
... который я работал с этим коммитом в Motor:
https://github.com/ajdavis/mongo-python-driver/commit/c7c1614bbf27c3a02ac8c582a8815dee59c39280
Судя по вашим тестам, кажется, что MotorReplicaSetConnection может на самом деле переподключиться к новому первичному серверу вскоре после того, как он станет первичным, пожалуйста, напишите мне снова, если это не так.