Skip to content

Commit 56b325c

Browse files
committed
Fix incorrect parsing of HLV history in BLIP rev message on BlipTesterClient
1 parent 1b36031 commit 56b325c

File tree

2 files changed

+39
-4
lines changed

2 files changed

+39
-4
lines changed

db/hybrid_logical_vector.go

+35
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,41 @@ func (hlv *HybridLogicalVector) ToHistoryForHLV() string {
427427
return s.String()
428428
}
429429

430+
func FromHistoryForHLV(history string) (*HybridLogicalVector, error) {
431+
hlv := NewHybridLogicalVector()
432+
// split the history string into PV and MV
433+
versionSets := strings.Split(history, ";")
434+
switch len(versionSets) {
435+
case 0:
436+
// no versions present
437+
return hlv, nil
438+
case 2:
439+
// MV
440+
mvs := strings.Split(versionSets[1], ",")
441+
for _, mv := range mvs {
442+
v, err := ParseVersion(mv)
443+
if err != nil {
444+
return nil, err
445+
}
446+
hlv.MergeVersions[v.SourceID] = v.Value
447+
}
448+
fallthrough
449+
case 1:
450+
// PV
451+
pvs := strings.Split(versionSets[0], ",")
452+
for _, pv := range pvs {
453+
v, err := ParseVersion(pv)
454+
if err != nil {
455+
return nil, err
456+
}
457+
hlv.PreviousVersions[v.SourceID] = v.Value
458+
}
459+
default:
460+
return nil, fmt.Errorf("Invalid history string format")
461+
}
462+
return hlv, nil
463+
}
464+
430465
// appendRevocationMacroExpansions adds macro expansions for the channel map. Not strictly an HLV operation
431466
// but putting the function here as it's required when the HLV's current version is being macro expanded
432467
func appendRevocationMacroExpansions(currentSpec []sgbucket.MacroExpansionSpec, channelNames []string) (updatedSpec []sgbucket.MacroExpansionSpec) {

rest/utilities_testing_blip_client.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -601,8 +601,8 @@ func (btr *BlipTesterReplicator) initHandlers(btc *BlipTesterClient) {
601601
if btc.UseHLV() {
602602
var incomingHLV *db.HybridLogicalVector
603603
if revHistory != "" {
604-
incomingHLV, _, err = db.ExtractHLVFromBlipMessage(revHistory)
605-
require.NoError(btr.TB(), err, "error extracting HLV %q: %v", revHistory, err)
604+
incomingHLV, err = db.FromHistoryForHLV(revHistory)
605+
require.NoError(btr.TB(), err, "error extracting HLV history %q: %v", revHistory, err)
606606
hlv = *incomingHLV
607607
}
608608
incomingCV, err := db.ParseVersion(revID)
@@ -849,8 +849,8 @@ func (btr *BlipTesterReplicator) initHandlers(btc *BlipTesterClient) {
849849
if btc.UseHLV() {
850850
var incomingHLV *db.HybridLogicalVector
851851
if revHistory != "" {
852-
incomingHLV, _, err = db.ExtractHLVFromBlipMessage(revHistory)
853-
require.NoError(btr.TB(), err, "error extracting HLV %q: %v", revHistory, err)
852+
incomingHLV, err = db.FromHistoryForHLV(revHistory)
853+
require.NoError(btr.TB(), err, "error extracting HLV history %q: %v", revHistory, err)
854854
hlv = *incomingHLV
855855
}
856856
incomingCV, err := db.ParseVersion(revID)

0 commit comments

Comments
 (0)