diff --git a/syncapi/types/types.go b/syncapi/types/types.go index f20c73bff..4761cce28 100644 --- a/syncapi/types/types.go +++ b/syncapi/types/types.go @@ -18,6 +18,7 @@ import ( "encoding/json" "errors" "fmt" + "sort" "strconv" "strings" @@ -129,15 +130,14 @@ func (t *StreamingToken) EDUPosition() StreamPosition { return t.Positions[1] } func (t *StreamingToken) String() string { - logStrings := []string{ - t.syncToken.String(), - } + var logStrings []string for name, lp := range t.logs { logStr := fmt.Sprintf("%s-%d-%d", name, lp.Partition, lp.Offset) logStrings = append(logStrings, logStr) } + sort.Strings(logStrings) // E.g s11_22_33.dl0-134.ab1-441 - return strings.Join(logStrings, ".") + return strings.Join(append([]string{t.syncToken.String()}, logStrings...), ".") } // IsAfter returns true if ANY position in this token is greater than `other`. diff --git a/syncapi/types/types_test.go b/syncapi/types/types_test.go index 7590ea522..634f84dc9 100644 --- a/syncapi/types/types_test.go +++ b/syncapi/types/types_test.go @@ -20,7 +20,7 @@ func TestNewSyncTokenWithLogs(t *testing.T) { }, }, }, - "s4_0.dl-0-123.ab-1-14419482332": &StreamingToken{ + "s4_0.ab-1-14419482332.dl-0-123": &StreamingToken{ syncToken: syncToken{Type: "s", Positions: []StreamPosition{4, 0}}, logs: map[string]*LogPosition{ "ab": &LogPosition{ @@ -46,8 +46,9 @@ func TestNewSyncTokenWithLogs(t *testing.T) { if !reflect.DeepEqual(got, *want) { t.Errorf("%s mismatch: got %v want %v", tok, got, want) } - if got.String() != tok { - t.Errorf("%s reserialisation mismatch: got %s want %s", tok, got.String(), tok) + gotStr := got.String() + if gotStr != tok { + t.Errorf("%s reserialisation mismatch: got %s want %s", tok, gotStr, tok) } } }