Expiration des objets basée sur le temps

La version v0.58.0 ajoute la prise en charge côté serveur de l’expiration des objets basée sur le temps, en complément de l’implémentation côté client introduite dans le SDK RC24. Les objets peuvent désormais expirer selon des horodatages Unix plutôt que selon des époques NeoFS abstraites, ce qui rapproche le comportement d’expiration des conventions de stockage habituelles. Les nœuds de stockage appliquent les métadonnées d’horodatage et les intègrent à la logique de collecte des déchets.

Renforcement du codage par effacement

Plusieurs clarifications concernent les opérations de codage par effacement. Un champ dédié ec_part_id remplace l’utilisation précédente des X-Headers pour sélectionner les parties EC dans les opérations GET et HEAD, et l’interface en ligne de commande ajoute un indicateur --ec-part correspondant. Les nœuds de stockage bloquent désormais les requêtes GET EC ambiguës qui définissent l’indicateur payload_only sans préciser l’index d’une partie. La restauration des parties EC entre règles a été ajoutée pour améliorer la gestion de la redondance.

Les X-Headers sont obsolètes dans toute la pile et ne sont plus transmis entre les nœuds de stockage. Les intégrateurs qui utilisent l’indicateur --xhdr de l’interface en ligne de commande doivent le supprimer.

Mise à niveau de la sécurité des sessions

Le chiffrement des clés de session a été mis à niveau vers HPKE (Hybrid Public Key Encryption), une norme de l’IETF définie dans la RFC 9180. Le stockage des jetons de session est désormais indexé par époque d’expiration, ce qui améliore l’efficacité du nettoyage.

Au démarrage, les enregistrements de session stockés dans le chemin d’état persistant sont automatiquement migrés vers le nouveau format indexé par époque avec chiffrement HPKE. Cette migration est irréversible, ce qui signifie que les anciennes versions des nœuds ne pourront plus lire les enregistrements. Les opérateurs doivent sauvegarder les données d’état persistant avant la mise à niveau.

Suppressions d’éléments obsolètes

La version v0.58.0 supprime la prise en charge des objets FSTree compressés, de la configuration multiaddr dans l’interface en ligne de commande et le nœud, de la méthode create du contrat de conteneur dans l’inner ring, ainsi que de la sortie de hachage homomorphe de la commande netinfo de l’interface en ligne de commande. La prise en charge des événements de contrat de conteneur Created et Removed a également été supprimée des nœuds de stockage, conformément aux changements de neofs-contract v0.28.0.

Les opérateurs qui ont des objets compressés dans FSTree doivent utiliser l’outil fstree-decompress de la version v0.57.0 avant la mise à niveau, car il n’est plus inclus. Les entrées multiaddr de la configuration du nœud doivent être remplacées par des URI simples.

Corrections de bogues et performances

Cette version corrige des paniques lors du traitement de AccountingService.Balance, la restauration du compteur du cache d’écriture au démarrage et la migration de la métabase de neofs-lancet. Un blocage de la collecte des déchets, causé par des objets expirés protégés par des LOCK stockés sur d’autres fragments, a été résolu. Les opérations GET et HEAD parcourent désormais les nœuds strictement par poids avant de se rabattre sur le stockage local, et le contrôleur de politique utilise une file en mémoire pour supprimer les objets redondants afin de réduire les écritures dans la métabase.

Les notes de version complètes sont disponibles au lien ci-dessous :
https://github.com/nspcc-dev/neofs-node/releases/tag/v0.58.0