# Changelog Changelog for FrostFS Node ## [Unreleased] ### Added ### Changed ### Fixed ### Removed ### Updated ## [v0.44.0] - 2024-25-11 - Rongbuk ### Added - Allow to prioritize nodes during GET traversal via attributes (#1439) - Add metrics for the frostfsid cache (#1464) - Customize constant attributes attached to every tracing span (#1488) - Manage additional keys in the `frostfsid` contract (#1505) - Describe `--rule` flag in detail for `frostfs-cli ape-manager` subcommands (#1519) ### Changed - Support richer interaction with the console in `frostfs-cli container policy-playground` (#1396) - Print address in base58 format in `frostfs-adm morph policy set-admin` (#1515) ### Fixed - Fix EC object search (#1408) - Fix EC object put when one of the nodes is unavailable (#1427) ### Removed - Drop most of the eACL-related code (#1425) - Remove `--basic-acl` flag from `frostfs-cli container create` (#1483) ### Upgrading from v0.43.0 The metabase schema has changed completely, resync is required. ## [v0.42.0] ### Added - Add audit logs for gRPC requests (#1184) - Add CLI command to convert eACL to APE (#1189) - Add `--await` flag to `control set-status` (#60) - `app_info` metric for binary version (#1154) - `--quiet` flag for healthcheck command (#1209) ### Changed - Deprecate Container.SetEACL RPC (#1219) ### Fixed - Take groups into account during APE processing (#1190) - Handle double SIGHUP correctly (#1145) - Handle empty filenames in tree listing (#1074) - Handle duplicate tree nodes in the split-brain scenario (#1234, #1251) - Remove APE pre-check in Object.GET/HEAD/RANGE RPC (#1249) - Delete EC gc marks and split info (#1257) - Do not search for non-existent objects on deletion (#1261) ### Updated - Make putting EC chunks more robust (#1233) ## [v0.41.0] ### Added - Support mTLS for morph client (#1170) ### Fixed - Update shard state metric during shard init (#1174) - Handle ENOSPC in blobovnicza (#1166) - Handle multiple split-infos for EC objects (#1163) - Set `Disabled` mode as the default for components (#1168) ## [v0.40.0] ### Added - Support EC chunk reconstruction in policer (#1129) - Support LOCK, DELETE and SEARCH methods on EC objects (#1147, 1144) - apemanager service to manage APE chains (#1105) ### Fixed - Properly verify GetRangeHash response (#1083) - Send `MONOTONIC_USEC` in sdnotify on reload (#1135) ### Updated - neo-go to `v0.106.0` ## [v0.39.0] ### Added - Preliminary erasure coding support (#1065, #1112, #1103, #1120) - TTL cache for blobovnicza tree (#1004) - Cache for frostfsid and policy contracts (#1117) - Writecache path to metric labels (#966) - Documentation for authentication mechanisms (#1097, #1104) - Metrics for metabase resync status (#1029) ### Changed - Speed up metabase resync (#1024) ### Fixed - Possible panic in GET_RANGE (#1077) ### Updated - Minimum required Go version to 1.21 ## [v0.38.0] ### Added - Add `trace_id` to logs in `frostfs-node` (#146) - Allow to forcefully remove container from IR (#733) - LOKI support (#740) - Allow sealing writecache (#569) - Support tree service in data evacuation (#947) - Use new policy engine mechanism for access control (#770, #804) - Log about active notary deposit waiting (#963) ### Changed - Sort output in `frostfs-cli` subcommands (#333) - Send bootstrap query at each epoch tick (#721) - Do not retain garbage in fstree on systems supporting O_TMPFILE (#970) ### Fixed - Handle synchronization failures better in tree service (#741) - Fix invalid batch size for iterator traversal in morph (#1000) ### Updated - `neo-go` to `v0.105.0` ## [v0.37.0] ### Added - Support impersonate bearer token (#229) - Change log level on SIGHUP for ir (#125) - Reload pprof and metrics on SIGHUP for ir (#125) - Support copies number parameter in `frostfs-cli object put` (#351) - Set extra wallets on SIGHUP for ir (#125) - Writecache metrics (#312) - Add tree service metrics (#370) ### Changed - `frostfs-cli util locode generate` is now much faster (#309) ### Fixed - Take network settings into account during netmap contract update (#100) - Read config files from dir even if config file not provided via `--config` for node (#238) - Notary requests parsing according to `neo-go`'s updates (#268) - Tree service panic in its internal client cache (#322) - Iterate over endpoints when create ws client in morph's constructor (#304) - Delete complex objects with GC (#332) ### Removed ### Updated - `neo-go` to `v0.101.1` - `google.golang.org/grpc` to `v1.55.0` - `paulmach/orb` to `v0.9.2` - `go.etcd.io/bbolt` to `v1.3.7` - `github.com/nats-io/nats.go` to `v1.25.0` - `golang.org/x/sync` to `v0.2.0` - `golang.org/x/term` to `v0.8.0` - `github.com/spf13/cobra` to `v1.7.0` - `github.com/panjf2000/ants/v2` `v2.7.4` - `github.com/multiformats/go-multiaddr` to `v0.9.0` - `github.com/hashicorp/golang-lru/v2` to `v2.0.2` - `go.uber.org/atomic` to `v1.11.0` - Minimum go version to v1.20 - `github.com/prometheus/client_golang` to `v1.15.1` - `github.com/prometheus/client_model` to `v0.4.0` - `go.opentelemetry.io/otel` to `v1.15.1` - `go.opentelemetry.io/otel/trace` to `v1.15.1` - `github.com/spf13/cast` to `v1.5.1` - `git.frostfs.info/TrueCloudLab/hrw` to `v1.2.1` ### Updating from v0.36.0 ## [v0.36.0] - 2023-04-12 - Furtwängler ### Added - Add GAS pouring mechanism for a configurable list of wallets (#128) - Separate batching for replicated operations over the same container in pilorama (#1621) - Doc for extended headers (#2128) - New `frostfs_node_object_container_size` metric for tracking size of reqular objects in a container (#2116) - New `frostfs_node_object_payload_size` metric for tracking size of reqular objects on a single shard (#1794) - Add command `frostfs-adm morph netmap-candidates` (#1889) - `object.delete.tombstone_lifetime` config parameter to set tombstone lifetime in the DELETE service (#2246) - Reload config for pprof and metrics on SIGHUP in `neofs-node` (#1868) - Multiple configs support (#44) - Parameters `nns-name` and `nns-zone` for command `frostfs-cli container create` (#37) - Tree service now saves the last synchronization height which persists across restarts (#82) - Add tracing support (#135) - Multiple (and a fix for single) copies number support for `PUT` requests (#221) ### Changed - Change `frostfs_node_engine_container_size` to counting sizes of logical objects - `common.PrintVerbose` prints via `cobra.Command.Printf` (#1962) - Env prefix in configuration changed to `FROSTFS_*` (#43) - Link object is broadcast throughout the whole container now (#57) - Pilorama now can merge multiple batches into one (#2231) - Storage engine now can start even when some shard components are unavailable (#2238) - `neofs-cli` buffer for object put increased from 4 KiB to 3 MiB (#2243) - Expired locked object is available for reading (#56) - Initialize write-cache asynchronously (#32) - Update system attribute names (#159) ### Fixed - Increase payload size metric on shards' `put` operation (#1794) - Big object removal with non-local parts (#1978) - Disable pilorama when moving to degraded mode (#2197) - Fetching blobovnicza objects that not found in write-cache (#2206) - Do not search for the small objects in FSTree (#2206) - Correct status error for expired session token (#2207) - Set flag `mode` required for `frostfs-cli control shards set-mode` (#8) - Fix `dirty` suffix in debian package version (#53) - Prevent node process from killing by systemd when shutting down (#1465) - Restore subscriptions correctly on morph client switch (#2212) - Expired objects could be returned if not marked with GC yet (#2213) - `neofs-adm morph dump-hashes` now properly iterates over custom domain (#2224) - Possible deadlock in write-cache (#2239) - Fix `*_req_count` and `*_req_count_success` metric values (#2241) - Storage ID update by write-cache (#2244) - `neo-go` client deadlock on subscription (#2244, #2272) - Possible panic during write-cache initialization (#2234) - Do not fetch an object if `meta` is missing it (#61) - Create contract wallet only by `init` and `update-config` command (#63) - Actually use `object.put.pool_size_local` and independent pool for local puts (#64). - Pretty printer of basic ACL in the NeoFS CLI (#2259) - Adding of public key for nns group `group.frostfs` at init step (#130) - Iterating over just removed files by FSTree (#98) - Parts of a locked object could not be removed anymore (#141) - Non-alphabet nodes do not try to handle alphabet events (#181) - Failing SN and IR transactions because of incorrect scopes (#2230, #2263) - Global scope used for some transactions (#2230, #2263) - Concurrent morph cache misses (#30) ### Removed ### Updated - `neo-go` to `v0.100.1` - `github.com/klauspost/compress` to `v1.15.13` - `github.com/multiformats/go-multiaddr` to `v0.8.0` - `golang.org/x/term` to `v0.3.0` - `google.golang.org/grpc` to `v1.52.0` - `github.com/spf13/viper` to `v1.15.0` - `github.com/nats-io/nats.go` to `v1.22.1` - `github.com/TrueCloudLab/hrw` to `v.1.1.1` - Minimum go version to v1.18 ### Updating from v0.35.0 (old NeoFS) You need to change configuration environment variables to `FROSTFS_*` if you use any. New config field `object.delete.tombstone_lifetime` allows to set tombstone lifetime more appropriate for a specific deployment. Use `__SYSTEM__` prefix for system attributes instead of `__NEOFS__` (existed objects with old attributes will be treated as before, but for new objects new attributes will be used). ## Older versions This project is a fork of [NeoFS](https://github.com/nspcc-dev/neofs-node) from version v0.35.0. To see CHANGELOG for older versions, refer to https://github.com/nspcc-dev/neofs-node/blob/master/CHANGELOG.md. [Unreleased]: https://git.frostfs.info/TrueCloudLab/frostfs-node/compare/98e48b68514127afc291b8a8ff6b12838ed1cb5c...master