Queens Series Release Notes

2.17.1

バグ修正

  • Fix SLO delete for accounts with non-ASCII names.

  • Fixed an issue in COPY where concurrent requests may have copied the wrong data.

  • Fixed a bug in how Swift uses eventlet that was exposed under high concurrency.

2.17.0

新機能

  • シンボリックリンクオブジェクトをサポートしました。

    Symlink オブジェクトは他のオブジェクトを参照します。これらは、X-Symlink-Target ヘッダーを持つ空のオブジェクトの作成によって作られます。ヘッダーの値は <container>/<object> 形式であり、シンボリックリンク作成時にターゲットが存在する必要はありません。クロスアカウントのシンボリックリンクは、X-Symlink-Target-Account ヘッダーを含むことによって作成できます。

    シンボリックリンクに対する GET と HEAD リクエストは、参照されたオブジェクトに対して操作が行われ、対象となるコンテナーへの適切な権限を必要とします。DELETE と PUT リクエストは、シンボリックリンクオブジェクト自身に操作が行われます。POST リクエストは参照されているオブジェクトに転送されません。シンボリックリンクに対する POST リクエストの送信は、307 Temporary Redirect レスポンスになります。

  • SLO マニフェストにおけるインラインデータセグメントをサポートしました。

    アップグレードの影響 -- ローリングアップグレード中に、更新されたプロキシサーバーは、期限切れのプロキシサーバーが読み込むことができないマニフェストを書き出す可能性があります。これは、すべてのノードでアップグレードが完了すると自ずと解決します。

  • tmpurl のダイジェストアルゴリズムが設定可能になり、Swift は、SHA-256 および SHA-512 の両方のサポートを追加しました。サポートされる tmpurl ダイジェストは、/info にてクライアントに公開されます。さらに、tempurl の署名を base64 でエンコードできるようになりました。

  • オブジェクトの有効期限の改善

    • X-Delete-At ヘッダーの値が X-Timestamp ヘッダーと等しいことを禁止します。

    • X-Delete-At の計算に、システム時間の代わりに X-Timestamp を使うようになりました。これは、時刻の誤差によって起こる期限データの矛盾を防止します。

    • 期限切れオブジェクトの削除は、システムでの作業を削減します。非同期で保留されているファイルの数は、すべてのオブジェクトで削減され、消去コード付きオブジェクトでは大幅に削減されます。これにより、コンテナーサーバーの負担が劇的に軽減しました。

    • 想定外の応答を受信した時のトレースバックのログを停止しました。

    • expirer が安全に古い作業項目を移動できるようになりました。

  • オブジェクト監査がオブジェクトを検査するとき、欠落しているメタデータのチェックサムを追加します。

  • swift-ring-builder の改善

    • バランスが改善されない場合でも、分散が改善されたときにリングを保存します。

    • 再分散後の小さな改善により分散数の変化を示すことができるように、リング分散メトリックの粒度を改善しました。既存、および新しいリングの分散は、swift-ring-builder の新しい --recalculate オプションを使うことで再計算されます。

    • 空のリングに詳細情報を表示します。

  • 消去コード付きオブジェクトへの範囲リクエストでの稀なソケットリークを修正しました。

  • オブジェクトの PUT によるコンテナー更新の数(つまり、一覧の更新)は、耐久性の保証を維持しながら、遥かに効率的に再計算されます。具体的には、消去符号化ポリシーへのオブジェクトの PUT は、通常、コンテナーの更新が大幅に少なくなります。

  • Zuul v3 の tox ジョブを Swift のリポジトリに移動しました。

  • CentOS 7 での、liberasurecode-devel が参照、インストールされる場所を変更しました。

  • InternalClient のコンテナー/オブジェクトの一覧作成で接頭辞を指定できるようになりました。

  • クラスターにインストールされているバージョンを比較するために、swift-recon CLI に --swift-versions を追加しました。

  • object-replicator を実行する場所を使い果たした時のトレースバックのログを停止しました。

  • SLO 読み込みへの 206 Partial Content 応答で ETag ヘッダーを送信します。

  • swift-recon-cron は conf.d の設定で動作するようになりました。

  • object-updater 統計ログを改善しました。すべての統計(成功、失敗、悪いピクルスによる検疫、リンク解除、エラー)を出力し、また、5分毎に進捗状況を出力します。成功の最後のログは残り、すべての統計情報も含むように拡張されました。

  • プロキシサーバーにアカウント自動作成が設定されていて、アカウント作成に失敗すると、Not Found (404) ではなく、サーバーエラー (500) が返されます。

  • 断片的な複製は、消去コードポリシーには使用できなくなりました。

  • 様々な他のマイナーなバグ修正と改善。

2.16.0

新機能

  • オブジェクトの拡張属性にチェックサムを追加します。

  • SLO PUT の間、クエリーパラメーター heartbeat=on を含めることで、クライアントがハートビートを要求できるようにしました。

    ハートビートをオンにすると、プロキシは 直ぐに 202 Accepted で応答を開始し、リクエストが完了するまで一つの空白文字を定期的に送信します。その時点で、成功か失敗かを示す「Response Status 」キーと、成功した場合には SLO の結果として生じる Etag を示す「Etag」キーを含む最終サマリーチャンクが送信されるようになります。

  • 外部鍵管理システムからの暗号化ルートシークレットの取得をサポートしました。現在 Barbican に限定されています。

  • リストの成型を listing_formats という新しいプロキシミドルウェアに移動しました。listing_formats は、最初の proxy-logging ミドルウェアの直ぐ右にあり、他のミドルウェアの左になければなりません。まだ存在しない場合は、自動的に挿入されます。

    注意: アカウントやコンテナー一覧を作るカスタムミドルウェアがある場合、受け取る一覧は JSON 形式のみです。

  • コンテナーサーバーの設定の allow_versions のために、非推奨警告ログを出力します。代わりに versioned_writes ミドルウェアをプロキシサーバーに設定します。このオプションは将来のリリースでは無視されます。

  • replication_one_per_devicereplication_concurrency_per_device によって定義されるカスタムカウントに置き換えました。元の設定値は非推奨となりましたが、引き続き機能します。両方の値が定義された場合、古い replication_one_per_device は無視されます。

  • 複数のバックエンドのタイムアウトが原因で、クライアントに不正なデータが返されるという稀な問題を修正しました。

  • memcached サーバーと通信するときのトレースバックログをクリーンアップしました。

  • アカウントとコンテナー複製の統計ログに、データベース全体が別のノードに送信された回数、remote_merges が追加されました。

  • Accept ヘッダーの解析に失敗した時、406 Not Acceptable の代わりに 400 Bad Request が返されます。

  • domain_remap ミドルウェアは、mangle_client_paths オプションをサポートしました。デフォルト値 "false" では、domain_remap の解析で URL のパスから path_root 値を取り除かなくなります。このパスの切り取りに依存している場合は、アップグレードする前に、オペレーターは mangle_client_paths を "True" に設定する必要があります。

  • swift-temp-url スクリプトを削除しました。この機能は、長い間 swiftclient にありましたが、2.10.0 から非推奨でした。

  • post_as_copy に関連するすべてのコードと設定を削除しました。このオプションは、2.13.0 から非推奨でした。

  • XML レスポンス(一括抽出や SLO アップロードの失敗など)がより正確になりました。意味のない "delete" の閉じタグは削除され、コンテキストに応じた "extract" あるいは "upload" に置き換えられました。

  • Static Large Object (SLO) マニフェストは、0 バイトの最終セグメントを再度持つようになりました。

  • バックグラウンド一貫性デーモンの子プロセスが同じファイル記述子を待ってデッドロックする問題を修正しました。

  • SLO クラウドへの POST が X-Static-Large-Object メタデータを変更できる、競合状態を削除しました。

  • リングビルダーのバランスのために、分散のトレードオフを受け入れ、場合によってはバランスされたリングにより早く到達します。

  • 複数のデバイスでの``swift-ring-builder set_weight`` の使用を修正しました。

  • オブジェクトを要求するとき、廃棄済みオブジェクト (tombstone) があり、他のデータよりも新しい場合には 404 を返します。以前の動作では、古いデータが返されていました。

その他の注意点

  • 様々な他のマイナーなバグ修正と改善。