Срок действия объектов на основе времени

В версии v0.58.0 добавлена поддержка на стороне сервера для истечения срока действия объектов на основе времени, дополняющая реализацию на стороне клиента, представленную в SDK RC24. Теперь срок действия объектов может истекать по временным меткам Unix, а не по абстрактным эпохам NeoFS, благодаря чему поведение системы становится ближе к традиционной семантике хранения данных. Узлы хранения проверяют метаданные временных меток и учитывают их при сборке мусора.

Повышение надежности кодирования с устранением избыточности

В операции кодирования с устранением избыточности внесено несколько уточнений. Для выбора частей EC в операциях GET и HEAD вместо прежнего использования X-Headers теперь применяется отдельное поле ec_part_id, а в CLI добавлен соответствующий флаг --ec-part. Узлы хранения теперь блокируют неоднозначные запросы EC GET, в которых установлен флаг payload_only, но не указан индекс части. Добавлено восстановление частей EC по межправилам для улучшения управления избыточностью.

Поддержка X-Headers объявлена устаревшей во всем стеке, и эти заголовки больше не пересылаются между узлами хранения. Интеграторам, использующим флаг CLI --xhdr, следует его удалить.

Повышение безопасности сеансов

Шифрование ключей сеансов обновлено до HPKE (гибридного шифрования с открытым ключом), стандарта IETF, определенного в RFC 9180. Теперь токены сеансов индексируются по эпохе истечения срока действия, что повышает эффективность очистки.

Записи сеансов, хранящиеся по пути постоянного состояния, при запуске автоматически преобразуются в новый формат с индексацией по эпохе и шифрованием HPKE. Это преобразование необратимо, то есть записи становятся нечитаемыми для более старых версий узлов. Операторам следует создать резервную копию данных постоянного состояния перед обновлением.

Удаление устаревших компонентов

В версии v0.58.0 удалена поддержка сжатых объектов FSTree, настройки multiaddr в CLI и узле, метода create контракта контейнеров во внутреннем кольце и вывода гомоморфного хеширования из команды CLI netinfo. Из узлов хранения также удалена поддержка событий Created и Removed контракта контейнеров в соответствии с изменениями в neofs-contract v0.28.0.

Операторам, у которых в FSTree есть сжатые объекты, перед обновлением необходимо воспользоваться утилитой fstree-decompress из v0.57.0, поскольку в новой версии она больше не входит в состав. Записи multiaddr в конфигурации узла следует заменить обычными URI.

Исправления ошибок и повышение производительности

В выпуске исправлены паники при обработке AccountingService.Balance, восстановление счетчика кэша записи при запуске и миграция метабазы neofs-lancet. Устранена остановка сборки мусора, вызванная истекшими объектами, защищенными блокировками LOCK, хранящимися на других шардах. Теперь операции GET и HEAD обходят узлы строго в порядке веса, прежде чем обращаться к локальному хранилищу, а для удаления избыточных объектов полицер использует очередь в памяти, чтобы сократить число записей в метабазу.

Полный список изменений выпуска доступен по ссылке ниже:
https://github.com/nspcc-dev/neofs-node/releases/tag/v0.58.0