Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR fixes CBG-5106, where delta-sync rev messages sent to a legacy (pre-HLV) client could end up with an empty/incorrect history property, breaking conflict detection on the receiver. The fix centralizes the previously duplicated history-construction logic across sendRevision, sendDelta, and sendRevAsDelta (redacted path), and propagates the remoteIsLegacyRev flag through sendRevAsDelta into sendDelta so the delta path can produce the same history as the full-revision path.
Changes:
- Introduce
buildRevHistory/revHistoryInputto centralize rev-message history construction for the 5 local/remote legacy-vs-HLV scenarios, with extensive scenario documentation. - Plumb
remoteIsLegacyRevthroughsendRevAsDelta→sendDelta(and fallbacksendRevisioncalls) so deltas to legacy clients include[hlvHistory, revID, revTreeHistory...]. - Add two new lower-level BLIP tests for the delta + legacy-client case and unskip the previously skipped
TestActiveReplicatorDeltaSyncWhenBothSidesLegacy.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| db/blip_sync_context.go | Adds buildRevHistory helper with scenario docs; sendDelta now takes remoteIsLegacyRev and uses the helper; sendRevision refactored to use the helper. |
| db/blip_handler.go | sendRevAsDelta takes remoteIsLegacyRev, propagates it to fallback sendRevision and sendDelta calls, and uses buildRevHistory for the redacted-rev path. |
| rest/blip_legacy_revid_test.go | Adds two tests verifying delta history sent to legacy clients (with and without HLV pv history). |
| rest/replicatortest/replicator_test_legacy_rev_test.go | Removes t.Skip from TestActiveReplicatorDeltaSyncWhenBothSidesLegacy now that the fix lands. |
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.
CBG-5106
QE tests now show history being sent correctly for both test cases in the linked ticket:
Pre-review checklist
fmt.Print,log.Print, ...)base.UD(docID),base.MD(dbName))docs/apiIntegration Tests