I'm connecting to a 3-node replica set running mongoDB in the following manner :

DB = motor.MotorReplicaSetConnection("mongodb://user:pass@ip_address:27017", replicaSet='repl_set_name').open_sync().collection_name

My replica set works nicely when PRIMARY goes down, another one takes over. But when I do this, my Tornado server throws a KeyError: 'pop from an empty set' error upon re-connection. It appears that Tornado/Motor is not able to reconnect to the new PRIMARY node, I'm not sure why. Even if I add/replace host:port to the connection string, I still get no results. Would this have to do with read_preference?

有帮助吗?

解决方案

L-R and I have been debugging this privately, I think the strange error message is a consequence of this Tornado bug:

https://github.com/facebook/tornado/issues/651

... which I've worked around with this commit to Motor:

https://github.com/ajdavis/mongo-python-driver/commit/c7c1614bbf27c3a02ac8c582a8815dee59c39280

Based on your tests it sounds like MotorReplicaSetConnection can in fact reconnect to the new primary shortly after it becomes primary, please email me again if that's not the case.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top