時間ベースのオブジェクト有効期限
v0.58.0では、時間ベースのオブジェクト有効期限に対するサーバー側のサポートが追加されました。これはSDK RC24で導入されたクライアント側の実装を補完するものです。オブジェクトは、抽象的なNeoFSエポックではなくUnixタイムスタンプに基づいて期限切れにできるようになり、有効期限の動作が一般的なストレージの仕組みに近づきます。ストレージノードはタイムスタンプのメタデータを適用し、ガベージコレクションのロジックに組み込みます。
イレイジャーコーディングの強化
イレイジャーコーディングの操作にいくつかの明確化が加えられました。GETおよびHEAD操作でECパートを選択する際、これまで使用されていたX-Headersに代わり、専用のec_part_idフィールドが使われます。これに合わせ、CLIには--ec-partフラグが追加されました。ストレージノードは、パートのインデックスを指定せずにpayload_onlyフラグを設定した、曖昧なEC GETリクエストをブロックするようになりました。冗長性管理を改善するため、クロスルールECパートの復元機能も追加されました。
X-Headersはスタック全体で非推奨となり、ストレージノード間で転送されなくなりました。CLIの--xhdrフラグを使用しているインテグレーターは、これを削除してください。
セキュリティのアップグレード
セッションキーの暗号化が、RFC 9180で定義されたIETF標準のHPKE(ハイブリッド公開鍵暗号化)にアップグレードされました。セッショントークンのストレージは有効期限のエポックでインデックス化され、クリーンアップの効率が向上しました。
永続状態パスに保存されているセッションレコードは、起動時にHPKE暗号化を使った新しいエポックインデックス形式へ自動的に移行します。この移行は元に戻せないため、レコードは旧バージョンのノードでは読み取れなくなります。運用者はアップグレード前に永続状態データをバックアップしてください。
レガシー機能の削除
v0.58.0では、圧縮FSTreeオブジェクト、CLIおよびノードでのmultiaddr設定、inner ringのコンテナコントラクトcreateメソッド、CLIのnetinfoコマンドによる準同型ハッシュ出力のサポートが削除されました。ストレージノードからは、コンテナコントラクトのCreatedイベントとRemovedイベントのサポートも削除され、neofs-contract v0.28.0の変更と整合するようになりました。
FSTreeに圧縮オブジェクトがある運用者は、アップグレード前にv0.57.0のfstree-decompressユーティリティを使用してください。このツールは以降同梱されなくなります。ノード設定内のmultiaddrエントリーは、通常のURIに置き換えてください。
バグ修正とパフォーマンス
今回のリリースでは、AccountingService.Balanceの処理、起動時のwrite-cacheカウンター復元、neofs-lancetのメタベース移行におけるパニックを修正しました。他のシャードに保存されたLOCKによって保護されている期限切れオブジェクトが原因で発生するガベージコレクションの停止も解消されました。GETおよびHEAD操作では、ローカルストレージにフォールバックする前に、重みの順に厳密にノードを走査するようになりました。また、ポリサーは冗長オブジェクトの削除にインメモリーキューを使用し、メタベースへの書き込みを減らします。
リリースノート全文は以下のリンクから確認できます:
https://github.com/nspcc-dev/neofs-node/releases/tag/v0.58.0
