diff --git a/CHANGELOG.md b/CHANGELOG.md index fa9faa9b0..bb8ad51d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,7 @@ Changelog for FrostFS Node - `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) ### Removed ### Updated diff --git a/pkg/local_object_storage/metabase/storage_id.go b/pkg/local_object_storage/metabase/storage_id.go index 4369215ae..4cda0b256 100644 --- a/pkg/local_object_storage/metabase/storage_id.go +++ b/pkg/local_object_storage/metabase/storage_id.go @@ -1,6 +1,8 @@ package meta import ( + "errors" + oid "github.com/TrueCloudLab/frostfs-sdk-go/object/id" "github.com/nspcc-dev/neo-go/pkg/util/slice" "go.etcd.io/bbolt" @@ -94,10 +96,11 @@ func (db *DB) UpdateStorageID(prm UpdateStorageIDPrm) (res UpdateStorageIDRes, e err = db.boltDB.Batch(func(tx *bbolt.Tx) error { exists, err := db.exists(tx, prm.addr, currEpoch) - if !exists || err != nil { - return err + if err == nil && exists || errors.Is(err, ErrObjectIsExpired) { + err = updateStorageID(tx, prm.addr, prm.id) } - return updateStorageID(tx, prm.addr, prm.id) + + return err }) return