Skip to content

docs: add S3-compatible adapter design#391

Merged
bootjp merged 10 commits intomainfrom
feature/s3-compatible
Mar 22, 2026
Merged

docs: add S3-compatible adapter design#391
bootjp merged 10 commits intomainfrom
feature/s3-compatible

Conversation

@bootjp
Copy link
Owner

@bootjp bootjp commented Mar 21, 2026

No description provided.

@bootjp bootjp requested a review from Copilot March 21, 2026 17:41
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces a comprehensive design document outlining the integration of an S3-compatible adapter into Elastickv. The proposed adapter aims to extend Elastickv's capabilities to include S3-like object storage, building upon its existing distributed systems infrastructure. The design details a robust data model, routing mechanisms, request flows for key S3 operations like PutObject and GetObject, and a strong consistency model. It also addresses authentication, failure handling, operational changes, observability, and a phased rollout strategy, ensuring a scalable and consistent S3 experience without full AWS parity.

Highlights

  • S3-Compatible Adapter Introduction: A new HTTP adapter is proposed to expose an S3-like object API, reusing existing Elastickv Raft, MVCC, HLC, and shard-routing patterns.
  • Strong Consistency Model: The design ensures strong read-after-write and list-after-write consistency for the current object view, leveraging a manifest-last write path.
  • Large Object Handling: Objects larger than a single MVCC value will be supported by chunking data, with chunk writes not visible until the manifest is committed.
  • HTTP Leader Proxy Requirement: An HTTP leader proxy is required to efficiently handle large S3 request and response bodies, avoiding the limitations of the current gRPC internal forwarding path.
  • Core System Changes: Modifications to kv/routeKey and kv/ShardStore.routesForScan are necessary to properly recognize S3 internal prefixes and enable S3-aware internal scan mapping.
  • Phased Rollout Plan: The S3 adapter will be rolled out in three phases, starting with core bucket and object operations, followed by multipart uploads and range reads, and finally virtual-hosted style and zero-copy CopyObject.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a comprehensive design document for a new S3-compatible adapter. The design is well-structured and covers key aspects such as the data model, request flows, consistency, and rollout plan. The proposed architecture leverages existing patterns within Elastickv, which is a good approach. I have a couple of suggestions to improve the clarity and completeness of the document.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a design document for an S3-compatible HTTP adapter that fits into Elastickv’s existing adapter + Raft/MVCC/HLC/shard-routing architecture, with an emphasis on streaming large payloads via an HTTP leader-proxy and manifest-last object visibility.

Changes:

  • Document proposed S3 API compatibility phases and request flows (Put/Get/List + multipart).
  • Propose an internal keyspace + routing normalization model to keep object metadata/chunks shard-correct.
  • Outline operational/config flags, observability, and a testing/rollout plan for incremental delivery.

bootjp and others added 2 commits March 22, 2026 04:29
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Contributor

Copilot AI commented Mar 21, 2026

@bootjp I've opened a new pull request, #392, to work on those changes. Once the pull request is ready, I'll request review from you.

Copilot AI and others added 3 commits March 21, 2026 19:34
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 4 comments.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@bootjp
Copy link
Owner Author

bootjp commented Mar 21, 2026

@copilot open a new pull request to apply changes based on the comments in this thread

Copy link
Contributor

Copilot AI commented Mar 21, 2026

@bootjp I've opened a new pull request, #393, to work on those changes. Once the pull request is ready, I'll request review from you.

Copilot AI and others added 2 commits March 21, 2026 19:50
docs: fix S3 adapter key encoding description and routing key placeholder consistency
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.

@bootjp bootjp merged commit 4dfcb75 into main Mar 22, 2026
11 checks passed
@bootjp bootjp deleted the feature/s3-compatible branch March 22, 2026 08:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants