Skip to content

Commit c43a742

Browse files
committed
Update docs around linearizable registers in 9.3.0+
Reflects the changes introduced in elastic/elasticsearch#138663.
1 parent 59c7441 commit c43a742

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

deploy-manage/tools/snapshot-and-restore/s3-repository.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,19 @@ Collect the {{es}} logs covering the time period of the failed analysis from all
425425

426426
## Linearizable register implementation [repository-s3-linearizable-registers]
427427

428-
The linearizable register implementation for S3 repositories is based on the strongly consistent semantics of the multipart upload API. {{es}} first creates a multipart upload to indicate its intention to perform a linearizable register operation. {{es}} then lists and cancels all other multipart uploads for the same register. {{es}} then attempts to complete the upload. If the upload completes successfully then the compare-and-exchange operation was atomic.
428+
### Conditional writes
429+
```{applies_to}
430+
stack: ga 9.3
431+
```
432+
433+
From 9.3.0 onwards the linearizable register implementation for S3 repositories is based on [S3's conditional writes](https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-writes.html) using the `If-None-Match` and `If-Match` request headers.
434+
435+
If your storage does not support conditional writes then it is not fully S3-compatible. However, if this is its only deviation in behaviour from AWS S3 then it will still work correctly with {{es}} as long as its multipart upload APIs have strongly consistent semantics, as described below. Future versions of {{es}} may remove this lenient behaviour and require your storage to support conditional writes. Please contact the supplier of your storage for further information about conditional writes and the strong consistency of your storage's multipart upload APIs.
429436

437+
### Multipart uploads
438+
439+
```{applies_to}
440+
stack: ga 9.2
441+
```
430442

443+
In versions before 9.3.0, or if your storage does not support conditional writes, the linearizable register implementation for S3 repositories is based on the strongly consistent semantics of the multipart upload APIs. {{es}} first creates a multipart upload to indicate its intention to perform a linearizable register operation. {{es}} then lists and cancels all other multipart uploads for the same register. {{es}} then attempts to complete the upload. If the upload completes successfully then the compare-and-exchange operation was atomic.

0 commit comments

Comments
 (0)