最近、Studio 3Tのアップデートをすると、AWSのDocumentDBに接続できなくなりました。
今回の記事は、Studio 3TからDocumentDBに接続しようとした時に発生した「Mongo Server error (301)」というエラーについて詳しく解説します。
Studio 3TからDocumentDBへの接続方法については、以下をご参照ください。
Mongo Server error (301)エラーの原因
「Mongo Server error (301)」は、接続試行時にターミナルに表示されるエラーメッセージです。
具体的には以下のような内容です。
1 2 3 4 5 6 7 8 9 10 |
Mongo Server error (MongoCommandException): Command failed with error 301: 'Retryable writes are not supported' on server docdb-db.cluster-xxxxxxxxxxxx.ap-northeast-1.docdb.amazonaws.com:27017. The full response is: { "ok" : 0.0, "code" : 301.0, "errmsg" : "Retryable writes are not supported", "operationTime" : Timestamp(1234567890, 1) } |
このエラーは、MongoDBのRetryable Writesがサポートされていないというものです。
Retryable Writesは、トランザクションが中断された場合に再試行できる機能ですが、このエラーによりその機能が無効になっていることを示しています。
対策1:retryWritesを無効にする
このエラーを解消するためには、Studio 3Tからの接続設定において「retryWrites」をfalseに設定する必要があります。
「retryWrites」の設定は、デフォルトではtrueになっており、これが再試行可能な書き込みを試みる原因となっています。
設定の変更方法は以下の通りです。
- Studio 3Tを開きます。
- 「Connect」タブを開き、接続設定の項目を見つけます。
- 「retryWrites」の欄を見つけ、「false」に変更します。
- 設定を保存し、再度接続を試みます。
このようにして、「retryWrites」の設定を変更し、再試行可能な書き込みを行わないようにすれば、エラー301は表示されなくなるはずです。
対策2:DocumentDBの設定を変更する
使用しているDocumentDBの設定を確認し、Retryable Writesが無効になっていることを確認してください。
1 |
mongodb://master:<insertYourPassword>@docdb-db.cluster-xxxxxxxxxxxx.ap-northeast-1.docdb.amazonaws.com:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false |
接続文字列のretryWrites=false
をretryWrites=true
に変更することで、Retryable Writesを有効にできます。
DocumentDBクラスターのパラメーターグループやクラスター設定を調整することが必要かもしれません。
まとめ
今回の原因は、AWSのDocumentDBの設定では「retryWrites」が無効になっているのに対し、Studio 3Tの設定ではデフォルトで有効になっていたのが原因でした。
対策としては、単純にStudio 3T側の接続設定で「retryWrites」をfalseにするだけですね!
これらの手順を試しても問題が解決しない場合は、AWSのドキュメンテーションやサポートセンターに問い合わせして、DocumentDBの特定の設定に関する情報を入手すると良いでしょう。
以上がStudio 3TからのDocumentDB接続エラー301に対する原因とその対策についての解説です。
これを読んで、皆さんがこのエラーに遭遇した際にはスムーズに対応できることを願っています。
また、何か新しい問題や疑問が発生した際には、遠慮なくコメント欄にてお知らせください。
コメント