2011-12-14 22 views
37

ここで正しいアプローチを理解することに若干の問題があります。自動再接続例外 "マスターが変更されました"

私は3人のメンバー(標準マスタスレーブスレーブ)で設定MongoDBのレプリカに接続しています。マスターが一貫性を保っている場合は、すべてが接続でうまく動作しています。レプリカは、主要なステップを下にいくつかの理由から、

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

、これはが新しいプライマリが選出された後も消えないという自動再例外をスローするために開始します。

は今、私はこの例外が選出されるように新しいプライマリのを待っているである可能性が最も高く、キャッチして処理する必要があることを承知しています。私が抱えている問題は、一度新しいプライマリが選択されても気にしないということです。この "マスターが変更されました"という例外が出てくるだけです。 __dict__ショー3台のすべてのホストとの接続を印刷

私は接続にreplicaset kwargを渡して試してみたが、これは予想外の引数として起動します。この種類の接続は、単に新しいプライマリに対する照会を開始しませんなぜ

理由はありますか?

EDIT:

これと同じ問題が明らかになりまし展開サーバー上で明示されています。マスターが全く変更されず、新しいプライマリが選択された後も決して消えないと、自動再帰接続の例外がスローされます。

Pymongoはバージョン2.2、mongodbはバージョン2.0.2です。 pymongoコード(mongouri対ホストのリスト)で接続が定義されている方法を変更しても効果はありません。サービスを復活させる唯一の方法は、元のマスターがもう一度プライマリになるまで他のホストにrs.stepDown()することです。

+0

あなたはどのバージョンのpymongoを使用していますか? 1.9または1.10にバグがありましたが、この動作がどこで発生する可能性があるかはわかりません。 1.11と2.0 + – dcrosta

+0

の@dcrostaバージョン1.11で確定しました – DeaconDesperado

+0

MongoDBのどのバージョンですか? 2.0.xには、プライマリを降格させると接続が閉じられないという問題があります。これはあなたがPyMongoに持っている問題を引き起こします。 https://jira.mongodb.org/browse/SERVER-4405 –

答えて

2

あなたの行動はバグです。可能な限り最善の方法は、バグが記録されていることを確認し、質問からリンクすることです。質問はほぼ一歳ですので、私はバグがクローズされることを期待しています(jira.mongodb.org/browse/SERVER-4405が該当するかどうかを確認してください)。あなたはMongoDBの2.2以降にアップグレードした場合

、問題が離れて行く必要があります。

関連する問題