refactor: abstract object storage backend - #2
Open
dylayed wants to merge 1 commit into
Open
Conversation
dylayed
force-pushed
the
storage-backend-refactor
branch
20 times, most recently
from
August 10, 2026 18:23
fbe603d to
0ac1830
Compare
Parse S3 configuration once and share it across deployment, runtime, ownership, and LTX replication. Keep object versions and conditional-write preconditions provider-neutral while preserving existing S3 behavior.
dylayed
force-pushed
the
storage-backend-refactor
branch
from
August 10, 2026 18:39
0ac1830 to
186eddf
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This refactors Celld's S3 storage code so the same runtime paths can support another object-store backend. Storage setup is currently spread across bucket access, fleet startup, and LTX replication. This patch moves that setup behind a private
storage_backendmodule and passes configuredobject_store::ObjectStoreinstances to callers.This patch is S3-only and is intended to preserve existing S3 behavior.
Approach
object_store::ObjectStoretrait instead of adding another provider abstraction.versionstring. S3 still maps it to an ETag; the next patch can map GCS to a generation without changing ownership logic.celld-ltxinstead of moving Celld's provider policy into that crate.Most of the remaining diff is mechanical propagation through callers.
Review
The main things to review are the boundary in
crates/celld/storage_backend.rsand whether existing S3 construction, credentials, retries, endpoint behavior, CAS behavior, and LTX configuration remain unchanged.Review this PR before #1. The two PRs are linked in native stack #3.
Validation
git diff --check.