Como o repórter atualizou a questão, isso foi relatado como um bug e, desde então, foi corrigido em uma versão mais recente do software.
Bug reportado / corrigido aqui: link
Esta questão deve ser marcada como respondida / fechada.
Eu ofereço uma recompensa séria, mas todos os meus pontos estão em SO :(
Estou executando um ReplicaSet do MongoDB de 3 nós (1 mestre, 1 escravo, 1 árbitro) em servidores separados. Eu estava brincando com o failover automático, garantindo que meu escravo fosse promovido a mestre adequadamente. Depois que eu dominei e o escravo assumiu como mestre, eu segui as instruções para reeleger meu antigo mestre de volta ao primário ( Forçando um Membro a ser Primário ). Do meu novo PRIMARY, eu corri:
> use admin
> db.auth("admin", "mypassword")
> config = rs.conf()
{
"_id" : "foo",
"version" : 1,
"members" : [
{
"_id" : 0,
"host" : "A",
},
{
"_id" : 1,
"host" : "B",
},
{
"_id" : 2,
"host" : "C",
}
]
}
> config.version++
> // the default priority is 1
> config.members[1].priority = 2
> rs.reconfig(config)
Isso gerou um erro, então eu tentei o método # 2:
db.adminCommand({replSetStepDown:1000000, force:1})
Isso pareceu dar errado em meus servidores, fazendo com que nenhum servidor fosse promovido a primário e meu antigo mestre e árbitro começassem a receber os seguintes erros:
Mon Aug 29 19:16:22 [rs Manager] replset msgReceivedNewConfig version: version: 2
Mon Aug 29 19:16:22 [rs Manager] replSet info saving a newer config version to local.system.replset
Mon Aug 29 19:16:22 [rs Manager] Server::doWork task:rs Manager exception:unauthorized db:local lock type:2 client:(NONE)
Mon Aug 29 19:16:22 [initandlisten] connection accepted from 192.168.139.50:28130 #476
Mon Aug 29 19:16:22 [initandlisten] connection accepted from 192.168.132.14:32014 #477
Mon Aug 29 19:16:23 [initandlisten] connection accepted from 192.168.139.50:28133 #478
Mon Aug 29 19:16:23 [initandlisten] connection accepted from 192.168.139.50:28136 #479
Mon Aug 29 19:16:23 [initandlisten] connection accepted from 192.168.132.14:32017 #480
Mon Aug 29 19:16:24 [initandlisten] connection accepted from 192.168.139.50:28139 #481
Mon Aug 29 19:16:24 [rs Manager] replset msgReceivedNewConfig version: version: 2
Mon Aug 29 19:16:24 [rs Manager] replSet info saving a newer config version to local.system.replset
Mon Aug 29 19:16:24 [rs Manager] Server::doWork task:rs Manager exception:unauthorized db:local lock type:2 client:(NONE)
Mon Aug 29 19:16:24 [rs Manager] replSet info not electing self, we are not freshest
Mon Aug 29 19:16:24 [initandlisten] connection accepted from 192.168.139.50:28142 #482
Mon Aug 29 19:16:24 [initandlisten] connection accepted from 192.168.132.14:32020 #483
Mon Aug 29 19:16:25 [initandlisten] connection accepted from 192.168.139.50:28145 #484
Mon Aug 29 19:16:25 [initandlisten] connection accepted from 192.168.139.50:28148 #485
Mon Aug 29 19:16:25 [initandlisten] connection accepted from 192.168.132.14:32023 #486
Mon Aug 29 19:16:26 [initandlisten] connection accepted from 192.168.139.50:28151 #487
Após algumas pesquisas, descobri que isso é um bug com o ReplicaSets:
Algumas informações sobre minha configuração:
journal = true
keyFile = /path/to/file
Como o repórter atualizou a questão, isso foi relatado como um bug e, desde então, foi corrigido em uma versão mais recente do software.
Bug reportado / corrigido aqui: link
Esta questão deve ser marcada como respondida / fechada.