AutoReconnect异常"master已更改"

Dea*_*ado 38 mongodb pymongo

在这里理解正确的方法有些困难.

我有一个与三个成员(标准主从奴隶)的mongodb副本集的连接.当主人保持一致时,一切都正常.

pymongo.Connection(['host1:27017','host2:27018','host3:27019']).database_test
Run Code Online (Sandbox Code Playgroud)

出于某种原因,当副本集主要降低时,这会开始抛出一个自动连接异常,即使在选择了新的主节点之后该异常也不会消失.

现在我知道需要捕获和处理这个异常,最有可能是等待新的主要选举.我遇到的问题似乎是,一旦选择了新的小学,它根本就不在乎.这个"主人已经改变"的例外情况不断涌现.

打印连接__dict__显示所有三个主机.

我已经尝试将replicasetkwarg 传递给连接,但这是一个意想不到的争论.

有没有理由说这种连接不会只是开始查询新的主要?

编辑:

现在显然在部署服务器上也出现了同样的问题.如果主服务器完全更改,则抛出自动连接异常,即使在选择新的主服务器之后也不会消失.

Pymongo是2.2版和mongodb版2.0.2.更改pymongo代码(mongouri与主机列表)中定义连接的方式无效.恢复服务的唯一方法是rs.stepDown()其他主机,直到原始主服务器再次成为主服务器.

iwe*_*ein 2

您所描述的行为是一个错误。最好的做法是确保记录了错误并从您的问题链接到它。由于这个问题已经存在了将近一年,我希望该错误能够被关闭(检查 jira.mongodb.org/browse/SERVER-4405 以查看它是否适用)。

如果升级到 MongoDB 2.2 或更高版本,问题就会消失。