Avendo qualche problema a capire il giusto approccio qui.Eccezione di AutoReconnect "master è cambiato"
Ho una connessione a un set di replica mongodb con tre membri (standard master-slave-slave). Tutto funziona perfettamente con la connessione quando il master rimane coerente.
pymongo.Connection(['host1:27017','host2:27018','host3:27019']).database_test
Per qualche ragione, quando il set di repliche fasi principali verso il basso, questo inizia a generare un'eccezione autoriconnessione che non va via, anche dopo una nuova primaria viene eletto.
Ora sono consapevole che questa eccezione deve essere catturata e gestita, molto probabilmente in attesa che venga eletto il nuovo primario. Il problema che sto avendo sembra essere che non gli interessa affatto una volta che il nuovo primario è stato scelto. Questa eccezione "master ha cambiato" continua a salire.
La stampa della connessione con __dict__
mostra tutti e tre gli host.
Ho provato a passare il kwarg replicaset
alla connessione, ma questo si presenta come un argomento inaspettato.
C'è un motivo per cui questo tipo di connessione non inizia solo a interrogare il nuovo primario?
EDIT:
Questo stesso problema è a quanto pare ora manifestando sul server di distribuzione. L'eccezione di autoreconnessione viene generata se il master cambia del tutto e non scompare mai anche dopo l'elezione di un nuovo primario.
Pymongo è la versione 2.2 e la versione 2.0.2 di mongodb. Cambiare il modo in cui la connessione è definita nel codice pymongo (mongouri vs. elenco di host) non ha alcun effetto. L'unico modo per far rivivere il servizio è quello di rs.stepDown()
gli altri host fino a quando il master originale è di nuovo primario.
Quale versione di pymongo stai usando? C'era un bug in 1.9 o 1.10, non riesco a ricordare quale, dove potrebbe mostrare questo comportamento. È stato definitivamente risolto a partire da 1.11 e 2.0+ – dcrosta
@dcrosta versione 1.11 – DeaconDesperado
Quale versione di MongoDB? 2.0.x ha un problema in cui se si esegue il passaggio del primario non chiude le sue connessioni. Ciò causerà il problema con PyMongo. https://jira.mongodb.org/browse/SERVER-4405 –