-
Notifications
You must be signed in to change notification settings - Fork 25.6k
Description
AWS S3 now has support for strongly-consistent conditional writes from which one may build a safe compare-and-exchange operation. Moreover, AWS have now withdrawn their earlier claims about the linearizability of multipart upload operations on which today's implementation is based. Thus for safety we must migrate to using conditional writes for linearizable register operations in S3-backed repositories.
However, customers running third-party S3-compatible storage solutions may not yet have upgraded their storage to one which supports this conditional write feature, but which does already have a properly linearizable multipart upload subsystem. We generally have to be quite strict about requiring full compatibility with AWS S3, but in recognition of the time it takes to upgrade a production storage implementation I propose we support both compare-and-exchange mechanisms for a while. Users may indicate that their storage does not support conditional writes using the setting introduced in #137185.
We must also consider how to ensure that a running cluster can safely switch from using linearizable multipart uploads over to using conditional writes during a rolling upgrade.