Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions tests/integrations/mcs/keyspace/tso_keyspace_group_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -737,9 +737,19 @@ func (suite *keyspaceGroupTestSuite) TestUpdateMemberWhenRecovery() {
nodes[newNode.GetAddr()] = newNode
tests.WaitForPrimaryServing(re, map[string]bs.Server{newNode.GetAddr(): newNode})

// Step 7: Verify GetTS succeeds after node restart
// Step 7: Verify GetTS succeeds after node restart.
// The restarted node may transiently serve stale keyspace-group metadata
// before watch sync catches up, so tolerate one transient GetTS error and
// assert eventual recovery instead of requiring immediate success.
result := <-resultCh
re.NoError(result.err, "GetTS should succeed after TSO node restart")
if result.err != nil {
testutil.Eventually(re, func() bool {
retryCtx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
_, _, err := client.GetTS(retryCtx)
return err == nil
}, testutil.WithWaitFor(60*time.Second), testutil.WithTickInterval(500*time.Millisecond))
}

// KEY VERIFICATION: If code incorrectly tried to fallback to legacy path,
// assertNotReachLegacyPath failpoint would have panicked already
Expand Down
Loading