sync: SVS v3 large-group revision (mhash, PARTIAL, announce+pull)#190
Open
Taranum01 wants to merge 7 commits into
Open
sync: SVS v3 large-group revision (mhash, PARTIAL, announce+pull)#190Taranum01 wants to merge 7 commits into
Taranum01 wants to merge 7 commits into
Conversation
Implements the approved large-group SVS revision with backward-compatible defaults (SyncVectorThreshold=0). Adds mhash and PARTIAL/announce+pull paths, 32=sv publish/pull recovery, tests, and a large-sync example. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Stop blind pulls to unpublished 32=sv prefixes on inline FULL mhash mismatch (spec §5.6: merge inline first). Clone SvMap before encoding outside the mutex to avoid concurrent map mutation panics. Co-authored-by: Cursor <cursoragent@cursor.com>
DV prefix-table SVS uses default SyncVectorThreshold=0. Recovery was still forcing announce-only sync on mhash mismatch, breaking step-2 prefix propagation while router reachability looked fine. Gate large-group recovery behind threshold > 0 for true legacy behavior. Co-authored-by: Cursor <cursoragent@cursor.com>
DV prefix-table sync uses default threshold 0. Emit StateVector-only SvsData (no mhash/VectorType) so step-2 SVS matches pre-revision behavior on the wire while large-group features stay behind threshold > 0. Co-authored-by: Cursor <cursoragent@cursor.com>
Adds topo.min.conf (6 nodes) and make e2e-local for reliable local validation on Mac Docker/Colima. Full sprint topo remains make e2e for CI. Co-authored-by: Cursor <cursoragent@cursor.com>
Publish the revision spec alongside the std/sync implementation in PR named-data#190. Co-authored-by: Cursor <cursoragent@cursor.com>
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
Implements the SVS v3 large-group revision (approved by Tianyuan Yu): inline FULL/PARTIAL sync, membership hash (
mhash), and announce+pull recovery via published full vectors at32=sv/<version>.size ≤ thresholdsize > thresholdmhashmismatchBackward compatible:
SyncVectorThresholddefaults to0(unlimited → inline FULL only, same as current SVS v3 +mhashon wire). Large-group modes activate only when the threshold is set.Main changes
MemberSetHash,VectorType,SvsDataRefonSvsData(std/ndn/svs/v3)ComputeMhash, PARTIAL encode, publish at32=sv, announce-only Sync, pull + merge (std/sync)std/examples/svs/large-sync(--threshold,--debugfor wire-mode logs)std/sync/*_test.go)Open item
Mixed-version interoperability (revised vs plain SVS v3 peers in one group) — spec §10; not addressed in this PR.
Test plan
go test ./std/sync/...go test ./std/...large-sync --debug --threshold=80on/ndn/svs/{alice,bob,carol}with multicast on/ndn/svsMade with Cursor