Ocata バージョンのリリースノート

2.13.1-12

バグ修正

  • Fixed deadlock when logging from a tpool thread. The object server runs certain IO-intensive methods outside the main pthread for performance. Previously, if one of those methods tried to log, this can cause a crash that eventually leads to an object server with hundreds or thousands of greenthreads, all deadlocked. The fix is to use a mutex that works across different greenlets and different pthreads.

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

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

  • Fixed a cache invalidation issue related to GET and PUT requests to containers that would occasionally cause object PUTs to a container to 404 after the container had been successfully created.

2.13.1

バグ修正

  • 失敗した同期がリモートサーバー上で余分なディスク I/O 負荷を引き起こす EC 再構成のバグを修正しました。同期要求が成功した場合にのみ、追加のチェック作業が要求されるようになりました。

  • クライアント側の COPY から生成された PUT サブリクエストは、 SSC (サーバー側のコピー) Swift ソースフィールドを適切に記録するようになりました。詳細については、 https://docs.openstack.org/developer/swift/logs.html#swift-source を参照してください。

  • コンテナードライブのエラーにより、残りのドライブに二重のスペースが使用されるというエラーを修正しました。コンテナーまたはアカウントデータベースを使用したドライブのマウントが解除されたときに、このバグは残りのすべてのドライブにハンドオフレプリカを作成し、ドライブの使用容量を増やし、クラスターを満たしていました。。

  • いくつかのテストの互換性の問題を修正しました。

  • 適切なポートを参照するようにドキュメントを更新しました。

2.13.0

新機能

  • 不要なディレクトリ構造ハッシュを排除してパフォーマンスを向上させました。

  • ファイルシステムツリーをハッシュするための一般的なケースを最適化し、多くの余分なディスク I/O を無くしました。

  • 競合検出のタイムスタンプ情報を含むように hashes.pkl ファイル形式を更新しました。また競合状態を防止し、一般的なケースを最適化するために、ハッシュロジックを簡略化しました。

  • 消去コード再構成は、ディスク単位で作業するのではなく、すべてのディスクで作業ジョブをシャッフルします。これにより、シングルディスクの I/O 競合がなくなり、並行性が高まるにつれて継続的なスケーリングが可能になります。

  • 消失コード再構成は、ハンドオフノードからの移動データをより良く処理します。 データを別のハンドオフに移動する代わりに、プライマリーノードに移動できるようになるまで待機します。

  • 現在、 TempURL は、Unix エポック秒のタイムスタンプに加えて、 ISO 8601 タイムスタンプの一般的な形式をサポートするようになりました。受け入れられる ISO 8601 形式は、 '%Y-%m-%dT%H:%M:%SZ' です。これにより、一時 URL の作成と使用がユーザーフレンドリーになります。

  • json または xml を使用してアカウントのコンテナーを表示するときに、 last_modified 時刻が追加されました。これにより、ディスク上のデータは変更されませんが、値を公開してコンテナーのオブジェクトリストとの一貫性を提供します。

  • AArch64 アーキテクチャーで I/O 優先順位がサポートされるようになりました。

アップグレード時の注意

  • アップグレードしてロールバックする場合は、すべての hashes.pkl ファイルを削除する必要があります。

廃止予定の機能

  • If using erasure coding with ISA-L in rs_vand mode and 5 or more parity fragments, Swift will emit a warning. This is a configuration that is known to harm data durability. In a future release, this warning will be upgraded to an error unless the policy is marked as deprecated. All data in an erasure code storage policy using isa_l_rs_vand with 5 or more parity should be migrated as soon as possible. Please see https://bugs.launchpad.net/swift/+bug/1639691 for more information.

  • 消去コード再構成の handoffs_first オプションは handoffs_only のために廃止されました。 handoffs_only ははるかに便利で、レプリケーターの handoffs_first モードと同様に、一貫性エンジンに復帰(ハンドオフ)ジョブだけに注力させるオプションをオペレーターに与え、リバランスのスピードを向上させます。 handoffs_only の振る舞いは、レプリケーターの handoffs_first オプションと一貫しています(レプリケーターのハンドオフ時にエラーが発生すると永久にハンドオフのみになります)が、handoff_only オプションは必要な処理を行い、再構成で正しく命名されます。

  • object_post_as_copy のデフォルトは False に変更されました。このオプションは廃止され、将来のリリースで削除される予定です。あなたのクラスターが post-as-copy を有効にして実行している場合は、 "fast-post" 方式を使用するように更新してください。 Swift の将来のバージョンは post-as-copyをサポートしませんし、将来の機能は post-as-copyの下ではサポートされません。(「Fast-post」は object_post_as_copy が false のところです)。

バグ修正

  • min_part_seconds_left が 0 より大きい場合、リングビルダーがデバイスの削除を許可しないバグを修正しました。

  • クライアント側の COPY から生成された PUT サブリクエストは、 SSC (サーバー側のコピー) Swift ソースフィールドを適切に記録するようになりました。詳細については、 https://docs.openstack.org/developer/swift/logs.html#swift-source を参照してください。

  • 範囲リクエストで SLO をダウンロードした結果、 5xx シリーズの応答が発生する可能性があるバグを修正しました。

  • 参照されたセグメントの md5 合計が連結されたものの md5 合計を ETag ヘッダーで送信することによって、SLO マニフェストの PUT 要求を適切に検証することができます。

  • 消去コード再構成の統計計算を修正しました。

  • min_part_hours が 0 に設定されたリングは、リバランスのたびに1つのパーティションレプリカのみを移動するため、 min_part_hours が 0 より大きい場合の動作が一致します。

その他の注意点

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

2.12.0

新機能

  • リングファイルには、ファイルを生成するために使用されたマシンのエンディアンに関するバイトオーダー情報が含まれるようになりました。エンディアンが異なるマシンでデシリアライズされた場合、値は適切にバイトスワップされます。新しく作成されたリングファイルはバイトオーダーには依存しませんが、以前に生成されたリングファイルは引き続き異なるエンディアンアーキテクチャで失敗します。古いリングファイルを再生成すると、それらはバイトオーダーに無関係になります。リングファイルを再生成しても、新しいデータの移動は発生しません。最新のリングファイルは Swift の古いバージョンでも使用できます(同じエンディアンのマシンでは、これは既存の動作を維持します)。

  • 416 のすべてのレスポンスには、範囲の値を持つ Content-Range ヘッダーが含まれるようになりました。 これにより、呼び出し元はオブジェクトの有効範囲要求値を知ることができます。

  • TempURL は、共通プレフィックスに対する検証をサポートするようになりました。接頭辞ベースの署名は、同じ接頭辞を共有するすべてのオブジェクトへのアクセスを許可します。これにより、コンテナーまたは擬似フォルダーの全体を共有するときに、大量の署名を作成することがなくなります。

  • SLO マニフェストでは、 etagsize_bytes キーは完全にオプションであり、必須ではありません。 以前は、キーが必要でしたが、値はオプションでした。唯一必要なキーは path です。

  • swift-recon での --md5 チェックのサーバー種別を尊重します。

バグ修正

  • if-none-match 要求で削除されたファイルを正しく処理します。

  • ユーザーが無効なコピー先を送信した場合は、 412 Precondition Failed を正しく送信します。以前は、Swift は 500 の内部サーバーエラーを送信しました。

  • パーツを置いている間の`swift-ring-builder` のまれな無限ループを修正しました。

  • オブジェクトがコンテナーリスティングに追加されるない、まれな可能性を排除し、オブジェクトアップデータによるコンテナーの更新を確実にしました。

  • パーティションが予想よりもずっと少なく更新される可能性がある hashes.pkl の固定の非確定的なサフィックスの更新を修正しました。

  • 新しいファイルが空でないパーティションに新しいサフィックスで格納されたときに発生した consolidate_hash の退行バグを修正しました。 このバグは2.7.0で導入され、パーティションサフィックスの一貫性のないハッシュのために、アップグレード中およびアップグレード後に rsync のレプリケーション統計を増加する可能性があります。

  • データベーススキーマが壊れていると、アカウントとコンテナーのデータベースが隔離されるようになりました。

  • DB が隔離された場合に、空の DB ハッシュとサフィックスディレクトリを削除します。

その他の注意点

  • 上流の CI で動作するように、func env tox 名から "in-process-" を削除しました。

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

2.11.0

新機能

  • Swift 2.10.0 で作成された EC 読み取りの改善も、再構成に適用されています。これにより、より多くの状況でフラグメントを再構築することができ、障害からの迅速な回復が可能になります。

  • 別の .durable ファイルを使用して EC フラグメントアーカイブの耐久性ステータスを示す代わりに、ファイル名に耐久マーカーを含めるように .data の名前を変更します。 これにより、すべてのEC .data ファイルに対して1つの inode が節約されます。 既存の .durable ファイルは削除されず、正常に動作し続けます。

  • いくつかの状況で ssync が不正なフラグメントデータを書き込むバグをクローズしました。書き込みを終了する前に、正しいバイト数がフラグメントに書き込まれていることを確認するためのチェックが追加されました。また、消去コード化されたフラグメントメタデータが読み取り要求で検証され、不良データが見つかると、そのフラグメントが隔離されます。

  • 静的ウェブに対する設定可能な URL ベースを追加しました。

  • 静的ラージオブジェクトの multi-range GET をサポートしました。

  • 「インライン」パラメータを使用する TempURL では、「ファイル名」パラメータも設定できるようになりました。どちらも Content-Disposition レスポンスヘッダーで使用されます。

  • X-Trans-Id を X-Openstack-Request-Id に写します。

  • SLO は現在、 HEAD セグメントを同時に処理するため、マニフェストの検証とオブジェクト作成が大幅に高速化されます。 デフォルトでは、一度に2つの HEAD リクエストが実行されますが、これはプロキシーサーバーの設定の "[filter:slo]" セクションの新しい concurrency 設定によってオペレーターが変更できます。

  • 監査が期限切れのオブジェクトを見つけたときの KeyError メッセージを抑制しました。

  • InternalClient を使用するデーモンは、 SIGTERM を使用して適切に停止できます。

  • ドライブ監査設定ファイルに "user" オプションを追加しました。その値は、ドライブ監査の調整キャッシュの所有者を設定するために使用されます。

  • update_auditor_status の呼び出しを絞りました。なので、1分に1回しか更新しません。

  • rsync の一時ファイルに対する unexpected-file 警告を抑制しました。

アップグレード時の注意

  • PyECLib の依存関係を 1.3.1 に更新しました。

  • Swift 2.11.0 以降で EC データを書き込んだ後は、以前のバージョンの Swift ではそのデータにアクセスできないことに注意してください。

致命的な問題

  • 警告: 消去コードに ISA-L ライブラリを使用している場合は、できるだけ早く liberasurecode 1.3.1 (またはそれ以降)にアップグレードしてください。 4つ以上のパリティを持つ isa_l_rs_vand を使用している場合は、 https://bugs.launchpad.net/swift/+bug/1639691 を参照して必要な処置を行ってください。

その他の注意点

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