4.5. Ceph Object Gateway
Ceph Object Gateway デーモンが、phoneNumbers.addr
が NULL
の場合でもクラッシュしなくなりました
以前は、構文エラーが原因で、select * from s3object[*].phonenumbers where phoneNumbers.addr is NULL;
のクエリーにより、Ceph Object Gateway デーモンがクラッシュしていました。
この修正により、誤った構文は特定および報告されるようになり、デーモンはクラッシュしなくなりました。
Ceph Object Gateway デーモンが cast( trim)
クエリーでクラッシュしなくなりました
以前は、select cast( trim( leading 132140533849470.72 from _3 ) as float) from s3object;
のクエリー内の trim スキップタイプチェックにより、Ceph Object Gateway デーモンがクラッシュしていました。
この修正により、タイプがチェックされ、誤っている場合は特定および報告されるようになったため、デーモンがクラッシュすることはなくなりました。
Ceph Object Gateway デーモンは、s3select
JSON クエリーの “where” 句でクラッシュしなくなりました
以前は、構文エラーが原因で、“where” 句を含む s3select
JSON クエリーにより Ceph Object Gateway デーモンがクラッシュしていました。
この修正により、誤った構文は特定および報告されるようになり、デーモンはクラッシュしなくなりました。
Ceph Object Gateway デーモンが s3 select phonenumbers.type
クエリーでクラッシュしなくなりました
以前は、構文エラーが原因で、select phonenumbers.type from s3object[*].phonenumbers;
のクエリーにより、Ceph Object Gateway デーモンがクラッシュしていました。
この修正により、誤った構文は特定および報告されるようになり、デーモンはクラッシュしなくなりました。
Ceph Object Gateway デーモンが引数を検証し、クラッシュしなくなりました
以前は、引数が欠落している Operator が原因で、存在しない引数にアクセスしようとした際にデーモンがクラッシュしていました。
この修正により、デーモンは各 Operator の引数の数を検証するようになり、クラッシュしなくなりました。
Ceph Object Gateway デーモンが trim コマンドでクラッシュしなくなりました
以前は、select trim(LEADING '1' from '111abcdef111') from s3object;
のクエリー内の trim スキップタイプチェックにより、Ceph Object Gateway デーモンがクラッシュしていました。
この修正により、タイプがチェックされ、誤っている場合は特定および報告されるようになったため、デーモンがクラッシュすることはなくなりました。
大きな値が入力されても Ceph Object Gateway デーモンがクラッシュしなくなりました
以前は、値エントリーが大きすぎるため、select DATE_DIFF(SECOND, utcnow(),date_add(year,1111111111111111111, utcnow())) from s3object;
のクエリーにより、Ceph Object Gateway デーモンがクラッシュしていました。
この修正により、クラッシュを特定し、エラーを報告するようになりました。
Ceph Object Gateway は、処理に失敗せずに CSV オブジェクトを解析するようになりました
以前は、Ceph Object Gateway は CSV オブジェクトを適切に解析できませんでした。プロセスが失敗すると、適切なエラーメッセージが表示されることなくリクエストが停止していました。
この修正により、CSV パーサーは期待どおりに動作し、失敗することなく CSV オブジェクトを処理できるようになりました。
ハイフンで始まるオブジェクトバージョンのインスタンス ID が復元されます
以前は、バージョン管理されたバケットのインデックスを復元するときに、オブジェクトバージョンのインスタンス ID がハイフンで始まる場合、バケットインデックスに適切に復元されませんでした。
この修正により、ハイフンで始まるインスタンス ID が認識され、期待どおりにバケットインデックスに復元されるようになりました。
複数削除機能の通知が期待どおりに機能します
以前は、バケット削除の通知を設定している場合に複数削除機能を実行すると、コード内の競合状態などの内部エラーが原因で、Ceph Object Gateway がクラッシュするか予期せぬ反応をしていました。
この修正により、複数削除機能の通知が期待どおりに機能するようになりました。
RADOS オブジェクトのマルチパートアップロードワークフローが適切に完了します
以前は、前のアップロードで作成されたマルチパートアップロードワークフローオブジェクトの一部である RADOS オブジェクトが原因で、特定の部分のアップロードが完了しないか、途中で停止することがありました。
この修正により、マルチパートアップロードワークフローが完了すると、すべての部分が正しくアップロードされるようになりました。
バケット所有者とは異なるテナントに属するユーザーが通知を管理できるようになりました
以前は、バケット所有者とは異なるテナントに属するユーザーは、通知を管理できませんでした。たとえば、変更、取得、削除などの通知です。
この修正により、適切な権限を持つすべてのユーザーが、バケットの通知を管理できるようになります。
バケットに対して NFS setattr
を実行する機能が削除されました
以前は、NFS ディレクトリーとしてエクスポートすることによりバケットに保存されている属性を変更すると、Ceph Object Gateway のバケット情報キャッシュ内で不整合が発生していました。このため、その後に NFS 経由でバケットにアクセスしようとすると失敗していました。
この修正により、バケットに対して NFS setattr
を実行する機能が削除されました。バケットに対する NFS setattr
(ディレクトリーに対する chown
など) の実行を試みても効果はありません。
上記の点は今後のリリースで変更される可能性があります。
クラッシュを防ぐために、再シャーディング可能なバケットレイアウトのテストが追加されました
以前は、マルチサイトで動的バケットの再シャーディングを有効にする追加のバケットレイアウトコードを使用した場合、動的、即時、または再スケジュールされた再シャーディング中に、バケットレイアウトが再シャーディングをサポートするか確認していませんでした。このため、動的バケットの再シャーディングの場合は Ceph Object Gateway デーモンがクラッシュし、即時またはスケジュールされた再シャーディングの場合は radosgw-admin
コマンドがクラッシュしていました。
この修正により、再シャーディング可能なバケットレイアウトのテストが追加され、クラッシュは発生しなくなりました。即時およびスケジュールされた再シャーディングが発生すると、エラーメッセージが表示されます。動的バケットの再シャーディングが発生すると、当該バケットはスキップされます。
user modify -placement-id
コマンドに空の --storage-class
引数を指定できるようになりました。
以前は、'user modify --placement-id' コマンドの実行時に --storage-class
引数を使用しなかった場合、コマンドが失敗していました。
この修正により、--storage-class
引数を空のままにしてもコマンドが失敗しなくなりました。
初期化の際に、以前に登録したウォッチのみが登録解除されるようになりました
以前は、初期化エラーにより、一度も登録されていないウォッチの登録を解除しようとすることがありました。これにより、一部のコマンドラインツールが予期せずクラッシュする場合がありました。
この修正により、以前に登録されたウォッチのみが登録解除されるようになりました。
マルチサイトレプリケーションにより、ゾーン間の整合状態が維持され、削除されたオブジェクトの上書きが防止されるようになりました
以前のバージョンでは、マルチサイトレプリケーションの競合状態により、削除すべきオブジェクトが別のサイトからコピーバックされ、ゾーン間で不整合状態が生じることがありました。その結果、ワークロードを受け取っているゾーンには、削除すべきいくつかのオブジェクトが残っていました。
この修正により、宛先ゾーンのトレース文字列を渡すためにカスタムヘッダーが追加され、オブジェクトのレプリケーショントレースと照合されます。一致する場合は 304 応答が返され、削除したオブジェクトが完全同期によって上書きされるのを防ぎます。
Ceph Object Gateway のメモリーフットプリントが大幅に削減されました
以前のバージョンでは、Lua スクリプト統合に関連するメモリーリークにより、RGW メモリーの過剰な増加が発生する場合がありました。
この修正により、リークが修正され、Ceph Object Gateway のメモリーフットプリントが大幅に削減されました。
バージョン管理されたオブジェクトの操作中に、バケットインデックスのパフォーマンスが影響を受けることがなくなりました
以前のバージョンでは、場合によってはスペースリークが発生し、バケットインデックスのパフォーマンスが低下することがありました。これは、オブジェクト論理ヘッド (OLH) の更新に関連する競合状態が原因で発生していました。OLH は、更新時のバージョン管理バケットの最新バージョン計算に関連します。
この修正により、OLH 更新操作のロジックエラーが修正され、バージョン管理されたオブジェクトの操作中にスペースがリークされなくなりました。
削除マーカーは LC ルールで正しく機能します
以前のバージョンでは、sal オブジェクトハンドルを再利用する最適化を試みていました。このため、削除マーカーが期待どおりに生成されませんでした。
この修正により、get-object-attributes の sal オブジェクトハンドルを再利用する変更が元に戻り、削除マーカーが正しく作成されるようになりました。
SQL エンジンが不正な計算で Ceph Object Gateway のクラッシュを引き起こさなくなりました
以前のバージョンでは、SQL エンジンが処理されない例外を出力し、Ceph Object Gateway のクラッシュを引き起こすことがありました。これは、日時操作の不正な SQL 計算が原因で発生していました。
この修正により、クラッシュするのではなく、エラーメッセージの出力によって例外が処理されるようになりました。
クエリー select trim (LEADING '1' from '111abcdef111') from s3object;
で大文字が使用されている場合にクエリーが機能するようになりました
以前のバージョンでは、LEADING
または TRAILING
がすべて大文字で書かれていると文字列が正しく読み取られず、float 型が string 型として参照され、誤った出力が発生していました。
この修正により、クエリーを完了する前に型チェックが導入され、LEADING
と TRAILING
は大文字で記述されても小文字で記述されても機能するようになりました。
JSON 解析が、クエリー select _1.authors.name from s3object[*] limit 1
に対して機能するようになりました
以前のバージョンでは、select _1.authors.name from s3object[*] limit 1
で指定された匿名配列は、誤った値を出力していました。
この修正により、クエリーに匿名配列が指定された場合でも、JSON 解析が機能するようになりました。