diff --git a/client/client.go b/client/client.go index a9dc3971944..ed021b95ae4 100644 --- a/client/client.go +++ b/client/client.go @@ -321,7 +321,9 @@ func (k *serviceModeKeeper) close() { defer k.Unlock() switch k.serviceMode { case pdpb.ServiceMode_API_SVC_MODE: - k.tsoSvcDiscovery.Close() + if k.tsoSvcDiscovery != nil { + k.tsoSvcDiscovery.Close() + } fallthrough case pdpb.ServiceMode_PD_SVC_MODE: if k.tsoClient != nil { diff --git a/tests/integrations/mcs/tso/server_test.go b/tests/integrations/mcs/tso/server_test.go index 56a8a96092c..cc11b1ba46d 100644 --- a/tests/integrations/mcs/tso/server_test.go +++ b/tests/integrations/mcs/tso/server_test.go @@ -323,6 +323,7 @@ func TestForwardTSOWhenPrimaryChanged(t *testing.T) { func TestResignTSOPrimaryForward(t *testing.T) { re := require.New(t) + re.NoError(failpoint.Enable("github.com/tikv/pd/client/fastUpdateServiceMode", `return(true)`)) suite := NewAPIServerForward(re) defer suite.ShutDown() // TODO: test random kill primary with 3 nodes @@ -345,6 +346,7 @@ func TestResignTSOPrimaryForward(t *testing.T) { re.NoError(err) suite.checkAvailableTSO(re, true) } + re.NoError(failpoint.Disable("github.com/tikv/pd/client/fastUpdateServiceMode")) } func TestResignAPIPrimaryForward(t *testing.T) {