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
protocol-units
The Hold-Cold Set protocol is best described in the doc comment on the hot_cold_set::set module. It is roughly a 3PC protocol for synchronizing set inclusion. Its initial motivation was to create means for writing to a "hot" set used by the application which should not grow indefinitely and a "cold" set that backs up the set used by application which may be periodically groomed by an operator.
This PR introduces the protocol and a simple
rocksdb
implementation.Forthcoming PRs will introduce:
HotColdCheckpointSet
which is intended to store members as in a Hot-Cold Set as they are tagged for different checkpoints.rocksb
implementation containing a persisted bloom filter as the probabilistic storage used by the Hot Set.HotColdSet
andHotColdCheckpointSet
abstraction.HotColdSet
andHotColdCheckpointSet
abstraction.bridge-service
to write to the sets and serve the necessary APIs.This are omitted here as they are incomplete and for the sake of some brevity.
Testing
rocksdb
implementation is unit tested.Outstanding issues