You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This PR adds a shared revision-ordered ring buffer utility to k8s.io/utils/buffer.
The motivation comes from review feedback on kubernetes/kubernetes#138338, where the snapshot ring buffer implementation in apiserver was requested to align more closely with etcd's cache ring buffer so that the implementation can eventually be shared between Kubernetes and etcd.
The new utility:
keeps entries ordered by revision
supports binary-search-based iteration boundaries
supports removing entries older than a given revision
supports explicit capacity growth while preserving logical order
keeps the internal layout and iteration/search structure close to etcd's cache/ringbuffer.go
Why this is needed:
The existing k8s.io/utils/buffer utilities cover generic fixed-size and growing ring buffers, but they do not provide the revision-aware semantics needed by the Kubernetes snapshot storage use case, such as revision-ordered lookup and trimming by revision.
The implementation is intended to stay close in spirit to etcd's cache ring buffer while also covering the revision-aware operations currently needed by the Kubernetes snapshot storage use case.
This pull-request has been approved by: yedou37 Once this PR has been reviewed and has the lgtm label, please assign aojea for approval. For more information see the Code Review Process.
The full list of commands accepted by this bot can be found here.
Details
Needs approval from an approver in each of these files:
You will be prompted by a bot to use commands during the review process. Do not be afraid to follow the prompts! It is okay to experiment. Here is the bot commands documentation.
You may want to refer to our testing guide if you run into trouble with your tests not passing.
If you are having difficulty getting your pull request seen, please follow the recommended escalation practices. Also, for tips and tricks in the contribution process you may want to read the Kubernetes contributor cheat sheet. We want to make sure your contribution gets all the attention it needs!
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
cncf-cla: yesIndicates the PR's author has signed the CNCF CLA.kind/featureCategorizes issue or PR as related to a new feature.size/XXLDenotes a PR that changes 1000+ lines, ignoring generated files.
2 participants
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.
What type of PR is this?
/kind feature
What this PR does / why we need it:
This PR adds a shared revision-ordered ring buffer utility to
k8s.io/utils/buffer.The motivation comes from review feedback on kubernetes/kubernetes#138338, where the snapshot ring buffer implementation in apiserver was requested to align more closely with etcd's cache ring buffer so that the implementation can eventually be shared between Kubernetes and etcd.
The new utility:
cache/ringbuffer.goWhy this is needed:
The existing
k8s.io/utils/bufferutilities cover generic fixed-size and growing ring buffers, but they do not provide the revision-aware semantics needed by the Kubernetes snapshot storage use case, such as revision-ordered lookup and trimming by revision.Which issue(s) this PR fixes:
N/A
Special notes for your reviewer:
This utility is extracted from the ring buffer work proposed in kubernetes/kubernetes#138338.
Related etcd context:
The implementation is intended to stay close in spirit to etcd's cache ring buffer while also covering the revision-aware operations currently needed by the Kubernetes snapshot storage use case.
Release note: