38 votes

AutoReconnect exception ", le maître a changé"

Un peu de mal à comprendre la bonne approche ici.

J'ai une connexion à un mongodb jeu de réplicas avec trois membres (standard maître-esclave-esclave). Tout fonctionne bien avec la connexion lorsque le maître reste cohérente.

pymongo.Connection(['host1:27017','host2:27018','host3:27019']).database_test

Pour quelque raison, quand le jeu de réplicas primaire marches plus bas, cela commence à jeter un autoreconnect exception qui ne disparaît pas, même après une nouvelle primaire est élu.

Maintenant, je suis conscient que cette exception doit être capturées et traitées, probablement en attente pour le nouveau primaire pour être élu. Le problème que j'ai semble être qu'il ne se soucie pas du tout une fois le nouveau principal a été choisi. Ce "maître a changé" exception ne cesse de venir.

L'impression de la connexion avec __dict__ montre tous les trois armées.

J'ai essayé en passant l' replicaset kwarg à la connexion, mais cela vient comme un argument inattendu.

Est-il une raison pour laquelle ce type de connexion ne serait pas juste de commencer à interroger les nouveaux primaire?

EDIT:

Ce même problème est apparemment maintenant manifestent sur le serveur de déploiement. Le autoreconnect exception est levée si le maître des changements à tous et ne va jamais loin, même après une nouvelle primaire est élu.

Pymongo est la version 2.2 et mongodb la version 2.0.2. La modification de la manière dont la connexion est définie dans le pymongo code (mongouri vs liste des hôtes) n'a aucun effet. La seule façon de relancer le service est-à - rs.stepDown() les autres hôtes jusqu'à ce que le master original est primaire une fois de plus.

2voto

iwein Points 4957

Le comportement que vous décrivez est un bug. Le meilleur plan d'action possible est de s'assurer que il y a un bug connecté pour elle et en faire un lien à partir de votre question. Depuis que la question a presque un an, j'attends de la bogue d'être fermé (à vérifier jira.mongodb.org/browse/SERVER-4405 pour voir si elle s'applique).

Si vous mettez à niveau vers MongoDB 2.2 ou version ultérieure, le problème devrait disparaître.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X