10107 NotWritablePrimary: not master / not writable primary(マスターではない / 書き込み可能なプライマリではない)
MongoDB意味
書き込み (またはプライマリを必要とする他の操作) が、現在プライマリではないレプリカセットメンバーに送信された。書き込みを受け付けるのはプライマリのみであるため、操作は拒否された。
原因
アプリケーションがセカンダリに書き込んでいる、フェイルオーバー (選出) 中に旧プライマリがセカンダリとなりクライアントがまだそこに接続している、またはドライバの読み書き設定とトポロジ情報が古い。接続文字列に replicaSet パラメータがないことが典型的な原因。
対処方法
ドライバにレプリカセットの全メンバーとレプリカセット名を設定する (接続文字列に replicaSet=... と全ホスト)。これによりドライバがプライマリを自動検出し、フェイルオーバー時に再ルーティングする。書き込みをプライマリにルーティングするデフォルトの読み書き設定を使用する。一時的なエラーであるため、アプリケーションで retryable writes を有効にする。どのメンバーが PRIMARY かを rs.status() で確認する。
同じデータベースの他の項目
- 67 CannotCreateIndexCannot create index(インデックスを作成できない)
- 27 IndexNotFoundIndex not found(インデックスが見つからない)
- 79 UnknownReplWriteConcernUnknown replica set write concern(不明なレプリカセット write concern)
- 91 ShutdownInProgressThe server is in the process of shutting down(サーバーはシャットダウン処理中)
- 189 PrimarySteppedDownPrimary stepped down while operation was in progress(操作の進行中にプライマリが stepdown した)
- 24 LockTimeoutOperation exceeded time limit waiting for a lock(ロック待機中に操作が制限時間を超えた)
- 7 HostNotFoundCould not find host(ホストが見つからない)