From f6d4ca57efc2cea024aeabf6a9cccfecc22d8870 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Wed, 5 Feb 2025 18:45:03 +0800 Subject: [PATCH] client: expose callback function (#9032) ref tikv/pd#8690 Signed-off-by: Ryan Leung Co-authored-by: ti-chi-bot[bot] <108142056+ti-chi-bot[bot]@users.noreply.github.com> --- client/servicediscovery/callbacks.go | 11 ++++++----- client/servicediscovery/mock_service_discovery.go | 4 ++-- client/servicediscovery/service_discovery.go | 8 ++++---- client/servicediscovery/tso_service_discovery.go | 6 +++--- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/client/servicediscovery/callbacks.go b/client/servicediscovery/callbacks.go index c21217f7e44..ea25fcb7de5 100644 --- a/client/servicediscovery/callbacks.go +++ b/client/servicediscovery/callbacks.go @@ -20,7 +20,8 @@ import ( "github.com/pingcap/kvproto/pkg/pdpb" ) -type leaderSwitchedCallbackFunc func(string) error +// LeaderSwitchedCallbackFunc is the callback function for leader switched event +type LeaderSwitchedCallbackFunc func(string) error // serviceCallbacks contains all the callback functions for service discovery events type serviceCallbacks struct { @@ -28,7 +29,7 @@ type serviceCallbacks struct { // serviceModeUpdateCb will be called when the service mode gets updated serviceModeUpdateCb func(pdpb.ServiceMode) // leaderSwitchedCbs will be called after the leader switched - leaderSwitchedCbs []leaderSwitchedCallbackFunc + leaderSwitchedCbs []LeaderSwitchedCallbackFunc // membersChangedCbs will be called after there is any membership change in the // leader and followers membersChangedCbs []func() @@ -36,7 +37,7 @@ type serviceCallbacks struct { func newServiceCallbacks() *serviceCallbacks { return &serviceCallbacks{ - leaderSwitchedCbs: make([]leaderSwitchedCallbackFunc, 0), + leaderSwitchedCbs: make([]LeaderSwitchedCallbackFunc, 0), membersChangedCbs: make([]func(), 0), } } @@ -47,7 +48,7 @@ func (c *serviceCallbacks) setServiceModeUpdateCallback(cb func(pdpb.ServiceMode c.serviceModeUpdateCb = cb } -func (c *serviceCallbacks) addLeaderSwitchedCallback(cb leaderSwitchedCallbackFunc) { +func (c *serviceCallbacks) addLeaderSwitchedCallback(cb LeaderSwitchedCallbackFunc) { c.Lock() defer c.Unlock() c.leaderSwitchedCbs = append(c.leaderSwitchedCbs, cb) @@ -72,7 +73,7 @@ func (c *serviceCallbacks) onServiceModeUpdate(mode pdpb.ServiceMode) { func (c *serviceCallbacks) onLeaderSwitched(leader string) error { c.RLock() - cbs := make([]leaderSwitchedCallbackFunc, len(c.leaderSwitchedCbs)) + cbs := make([]LeaderSwitchedCallbackFunc, len(c.leaderSwitchedCbs)) copy(cbs, c.leaderSwitchedCbs) c.RUnlock() diff --git a/client/servicediscovery/mock_service_discovery.go b/client/servicediscovery/mock_service_discovery.go index 362626243f7..779ca832e35 100644 --- a/client/servicediscovery/mock_service_discovery.go +++ b/client/servicediscovery/mock_service_discovery.go @@ -101,10 +101,10 @@ func (*mockServiceDiscovery) ScheduleCheckMemberChanged() {} func (*mockServiceDiscovery) CheckMemberChanged() error { return nil } // ExecAndAddLeaderSwitchedCallback implements the ServiceDiscovery interface. -func (*mockServiceDiscovery) ExecAndAddLeaderSwitchedCallback(leaderSwitchedCallbackFunc) {} +func (*mockServiceDiscovery) ExecAndAddLeaderSwitchedCallback(LeaderSwitchedCallbackFunc) {} // AddLeaderSwitchedCallback implements the ServiceDiscovery interface. -func (*mockServiceDiscovery) AddLeaderSwitchedCallback(leaderSwitchedCallbackFunc) {} +func (*mockServiceDiscovery) AddLeaderSwitchedCallback(LeaderSwitchedCallbackFunc) {} // AddMembersChangedCallback implements the ServiceDiscovery interface. func (*mockServiceDiscovery) AddMembersChangedCallback(func()) {} diff --git a/client/servicediscovery/service_discovery.go b/client/servicediscovery/service_discovery.go index 3657a5229c2..146a08aa381 100644 --- a/client/servicediscovery/service_discovery.go +++ b/client/servicediscovery/service_discovery.go @@ -130,11 +130,11 @@ type ServiceDiscovery interface { // in a quorum-based cluster or among the primary/secondaries in a primary/secondary configured cluster. CheckMemberChanged() error // ExecAndAddLeaderSwitchedCallback executes the callback once and adds it to the callback list then. - ExecAndAddLeaderSwitchedCallback(cb leaderSwitchedCallbackFunc) + ExecAndAddLeaderSwitchedCallback(cb LeaderSwitchedCallbackFunc) // AddLeaderSwitchedCallback adds callbacks which will be called when the leader // in a quorum-based cluster or the primary in a primary/secondary configured cluster // is switched. - AddLeaderSwitchedCallback(cb leaderSwitchedCallbackFunc) + AddLeaderSwitchedCallback(cb LeaderSwitchedCallbackFunc) // AddMembersChangedCallback adds callbacks which will be called when any leader/follower // in a quorum-based cluster or any primary/secondary in a primary/secondary configured cluster // is changed. @@ -780,7 +780,7 @@ func (c *serviceDiscovery) CheckMemberChanged() error { } // ExecAndAddLeaderSwitchedCallback executes the callback once and adds it to the callback list then. -func (c *serviceDiscovery) ExecAndAddLeaderSwitchedCallback(callback leaderSwitchedCallbackFunc) { +func (c *serviceDiscovery) ExecAndAddLeaderSwitchedCallback(callback LeaderSwitchedCallbackFunc) { url := c.getLeaderURL() if len(url) > 0 { if err := callback(url); err != nil { @@ -794,7 +794,7 @@ func (c *serviceDiscovery) ExecAndAddLeaderSwitchedCallback(callback leaderSwitc // AddLeaderSwitchedCallback adds callbacks which will be called when the leader // in a quorum-based cluster or the primary in a primary/secondary configured cluster // is switched. -func (c *serviceDiscovery) AddLeaderSwitchedCallback(callback leaderSwitchedCallbackFunc) { +func (c *serviceDiscovery) AddLeaderSwitchedCallback(callback LeaderSwitchedCallbackFunc) { c.callbacks.addLeaderSwitchedCallback(callback) } diff --git a/client/servicediscovery/tso_service_discovery.go b/client/servicediscovery/tso_service_discovery.go index 06401427522..70b823bc5af 100644 --- a/client/servicediscovery/tso_service_discovery.go +++ b/client/servicediscovery/tso_service_discovery.go @@ -141,7 +141,7 @@ type tsoServiceDiscovery struct { clientConns sync.Map // Store as map[string]*grpc.ClientConn // tsoLeaderUpdatedCb will be called when the TSO leader is updated. - tsoLeaderUpdatedCb leaderSwitchedCallbackFunc + tsoLeaderUpdatedCb LeaderSwitchedCallbackFunc checkMembershipCh chan struct{} @@ -359,7 +359,7 @@ func (c *tsoServiceDiscovery) CheckMemberChanged() error { } // ExecAndAddLeaderSwitchedCallback executes the callback once and adds it to the callback list then. -func (c *tsoServiceDiscovery) ExecAndAddLeaderSwitchedCallback(callback leaderSwitchedCallbackFunc) { +func (c *tsoServiceDiscovery) ExecAndAddLeaderSwitchedCallback(callback LeaderSwitchedCallbackFunc) { url := c.getPrimaryURL() if len(url) > 0 { if err := callback(url); err != nil { @@ -371,7 +371,7 @@ func (c *tsoServiceDiscovery) ExecAndAddLeaderSwitchedCallback(callback leaderSw // AddLeaderSwitchedCallback adds callbacks which will be called when the primary in // a primary/secondary configured cluster is switched. -func (*tsoServiceDiscovery) AddLeaderSwitchedCallback(leaderSwitchedCallbackFunc) {} +func (*tsoServiceDiscovery) AddLeaderSwitchedCallback(LeaderSwitchedCallbackFunc) {} // AddMembersChangedCallback adds callbacks which will be called when any primary/secondary // in a primary/secondary configured cluster is changed.