See nspcc-dev/neofs-contract#581 and nspcc-dev/neofs-s3-gw#1244. With versions in-place we can have them passed in requests (optionally), then:
- if there is no version, SN behaves in the same way as now
- if there is one and SN has a different locally some (new type of) error is returned to caller
Then caller can detect it's out of date, re-request container and retry the operation using new data.
Obviously this implies versions don't change often (theoretically retried request can get out of sync as well), but for things stored in container currently that's true.
See nspcc-dev/neofs-contract#581 and nspcc-dev/neofs-s3-gw#1244. With versions in-place we can have them passed in requests (optionally), then:
Then caller can detect it's out of date, re-request container and retry the operation using new data.
Obviously this implies versions don't change often (theoretically retried request can get out of sync as well), but for things stored in container currently that's true.