Conversation
Replace the hand-written S3 and local filesystem backends with one implementation over `object_store`, so any S3-compatible endpoint works through a bucket, endpoint, and region instead of an access point ARN. The config section becomes `plus.registry.storage` with `scheme: file | s3`, matching the disaster recovery section. Stored keys and the local directory layout are unchanged for a plain prefix, pinned by key layout tests; see the config reference for slash-terminated prefixes.
epompeii
added this pull request to stack #1042
September 18, 2026 07:13
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
Contributor
|
| Project | Bencher |
| Branch | u/ep/s3-r2/registry-storage |
| Testbed | intel-v1 |
Click to view all benchmark results
| Benchmark | Latency | Benchmark Result microseconds (µs) (Result Δ%) | Upper Boundary microseconds (µs) (Limit %) |
|---|---|---|---|
| Adapter::Json | 📈 view plot 🚷 view threshold | 5.24 µs(+8.23%)Baseline: 4.84 µs | 5.88 µs (89.17%) |
| Adapter::Magic (JSON) | 📈 view plot 🚷 view threshold | 5.06 µs(+7.74%)Baseline: 4.69 µs | 5.59 µs (90.38%) |
| Adapter::Magic (Rust) | 📈 view plot 🚷 view threshold | 28.31 µs(+7.25%)Baseline: 26.40 µs | 29.86 µs (94.81%) |
| Adapter::Rust | 📈 view plot 🚷 view threshold | 4.73 µs(+22.10%)Baseline: 3.87 µs | 6.00 µs (78.78%) |
| Adapter::RustBench | 📈 view plot 🚷 view threshold | 4.70 µs(+21.64%)Baseline: 3.87 µs | 5.98 µs (78.64%) |
epompeii
marked this pull request as ready for review
September 18, 2026 07:47
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.
The container registry storage crate carried two hand-written backends: one on the AWS SDK, addressed by an S3 access point ARN, and one on the local filesystem. This replaces both with one implementation over the
object_storecrate, so any S3-compatible endpoint works through a bucket, an endpoint, and a region, and the local backend isobject_store's filesystem store.Changes
OciStorageoverArc<dyn ObjectStore>replacesOciS3StorageandOciLocalStorage. Uploads keep their session shape (chunks as objects under_uploads/, a smallstate.json); completion streams the chunks through a multipart upload opened directly on the final blob key and aborts on a digest mismatch, so no temporary object and no copy.plus.registry.data_storetoplus.registry.storagewithscheme: file | s3, mirroring the disaster recovery replica field for field.filetakes an optionalpath;s3takesbucket,path,endpoint,region(defaultauto), credentials, andchunk_size.#prefixes. A multipart boundary test pins reassembly across several parts.tests/s3_live.rs) runs the full flow against a scratch bucket from environment variables; it never runs in CI.aws-sdk-s3andaws-credential-typesleave the workspace;object_store(aws,fs) andsync_wrapperarrive. The lockfile change is additions plus the AWS tree's removal, no version bumps.A-Za-z0-9._-/percent-encoded), and recommend a lifecycle rule that aborts incomplete multipart uploads.Breaking changes
plus.registry.data_storeis replaced byplus.registry.storage. A config that still carriesdata_storeis ignored and the registry falls back to local files.paththat began or ended with a slash, or contained a percent-encoded character, stored objects under a different key prefix in the previous release; that data must be moved to the normalized prefix. Plain prefixes are unchanged.Last of a stack of three, on top of the
plus.disaster_recoveryrename and the on demand backup removal.