6.6. マルチサイトの Ceph Object Gateway
プライマリーゾーンでバケットのバージョン管理を一時停止しても、アーカイブゾーンでバケットのバージョン管は一時停止されなくなりました
以前は、バケットのバージョン管理がプライマリーゾーンで一時停止されると、アーカイブゾーンでのバケットのバージョニングも一時停止されていました。
今回の修正により、他のゾーンでバケットのバージョン管理が変更されても、アーカイブゾーンのバージョン管理は常に有効になります。アーカイブゾーンでのバケットのバージョン管理は、中断されなくなりました。
マルチサイトレプリケーションでの radosgw-admin sync status
コマンドは、期待どおりに機能します
これまでマルチサイトレプリケーションでは、参加している 1 つ以上の Ceph Object Gateway ノードがダウンしている場合、radosgw-admin sync status
コマンドを実行すると (5) Input/output error が出力されていました。このステータスは、すべての Ceph Object Gateway ノードがオンラインに復帰すると解決されるはずです。
今回の更新により、radosgw-admin sync status
コマンドは停止せず、期待どおり動作するようになりました。
廃止されたバケットインデックスエントリーをトリミングするプロセスが原因で radosgw
インスタンスがクラッシュしなくなりました
これまで特定の状況下では、廃止されたバケットインデックスエントリーをトリミングするプロセスにおいて初期化されていないポインター変数にアクセスし、radosgw
インスタンスがクラッシュすることがありました。
今回の修正により、コードは使用直前に初期化され、radosgw
インスタンスがクラッシュしなくなりました。
バケット同期の実行には、すべてのオブジェクトを同期する制御ロジックが指定されるように。
以前のバージョンでは、マルチサイトクラスターで動的バケットの再シャーディングをサポートするために、バケットインデックスログが 1 つであったものが、複数のバケットインデックスログの生成に置き換えられました。ただし、バケット同期実行の実装方法が原因で、最も古い未処理の世代のみが同期実行されます。
この修正では、バケット同期の実行に制御ロジックが与えられ、最も古い未解決のものから現在のものまで同期を実行できるようになり、すべてのオブジェクトが想定待どおりに同期されるようになりました。
バケットごとのレプリケーション論理エラーの修正がポリシーを正しく実行するように
以前のバージョンでは、内部ロジックエラーにより、バケットごとのレプリケーションポリシーが機能していなかったため、バケットごとのレプリケーションで障害が発生していました。
今回の修正により、ソースおよびターゲットバケット情報の混乱を生じさせるロジックエラーが修正され、ポリシーが正しく実行されるようになりました。
変数アクセスにより、未定義のプログラム動作が発生しないように。
以前は、coverity scan は、 2 つのケースを特定します。移動後に変数が使用されることが原因で未定義のプログラム動作が問題を起こしていました。
この修正では、変数アクセスが修正され、潜在的な障害が発生しなくなりました。
テナントはあるがバケットがないリクエストでクラッシュが発生しなくなりました
以前は、アップストリームのリファクタリングによって、初期化されていないバケットデータフィールドが初期化されていないポインターに置き換えられていました。そのため、有効なバケットを参照しない URL を含むバケットリクエストがクラッシュを引き起こしていました。
今回の修正により、バケットにアクセスするが有効なバケットを指定しないリクエストは拒否され、クラッシュではなくエラーが発生するようになります。