-
Notifications
You must be signed in to change notification settings - Fork 2.1k
[META] Implement Conditional APIs for Multi-Writer Detection in Remote Store Clusters #17859
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Labels
Meta
Meta issue, not directly linked to a PR
Comments
x-INFiN1TY-x
pushed a commit
to x-INFiN1TY-x/OpenSearch_Local
that referenced
this issue
Apr 15, 2025
Commit 2 for meta opensearch-project#17859
x-INFiN1TY-x
pushed a commit
to x-INFiN1TY-x/OpenSearch_Local
that referenced
this issue
Apr 15, 2025
x-INFiN1TY-x
pushed a commit
to x-INFiN1TY-x/OpenSearch_Local
that referenced
this issue
Apr 23, 2025
This was referenced Apr 24, 2025
x-INFiN1TY-x
pushed a commit
to x-INFiN1TY-x/OpenSearch_Local
that referenced
this issue
Apr 27, 2025
This was referenced Apr 28, 2025
Open
3 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Please describe the end goal of this project
This META issue tracks the implementation of the "Approach 2: Versioned & Mutable Metadata File with Conditional Writes" (see RFC #17763). The aim is to simplify
writer and replica coordination during writes for preventing multi-writer conflicts and simplifying recovery for red clusters.
In a remote store–enabled cluster, the primary shard writes data (translog entries and segment information) to external object stores (Amazon S3, Google Cloud Storage, Azure Blob Storage) while replicas source their data remotely. The existing synchronous primary term validation mechanism—relying on blocking, inter-node calls—adds latency and complexity. This proposal leverages the remote store’s native conditional APIs to enforce writer integrity atomically, thereby reducing coordination overhead.
Key Components/Tasks
Supporting References
Issues
Implement conditional operations on S3 PutObject API for single-part uploads.
Extend the conditional write capability to S3 multipart uploads using conditional headers.
Implement an ETag cache at the shard level to store and manage the last known ETag/generation number from remote storage.
Migrate from dynamic naming to fixed names for metadata files & adapt concerned functions to the new architecture.
Update the bootstrap logic to retrieve and cache the latest ETag from the metadata file synced during shard initialization.
Detect conditional PUT failures (HTTP 412/409) and trigger self-failover mechanisms.
[DL-2] Integrate Versioned Metadata with Snapshot V2
[DL-3] Adapt Remote Store Restore API for Versioned Metadata
Create unit, integration, and performance tests to simulate multi-writer scenarios, conditional write operations, and to validate recovery workflows.
Related component
Storage:Remote
The text was updated successfully, but these errors were encountered: