diff --git a/clients/naming_client/naming_cache/subscribe_callback.go b/clients/naming_client/naming_cache/subscribe_callback.go index 1f4964db..1c891e24 100644 --- a/clients/naming_client/naming_cache/subscribe_callback.go +++ b/clients/naming_client/naming_cache/subscribe_callback.go @@ -56,6 +56,8 @@ func (ed *SubscribeCallback) AddCallbackFunc(serviceName string, clusters string func (ed *SubscribeCallback) RemoveCallbackFunc(serviceName string, clusters string, callbackFunc *func(services []model.Instance, err error)) { logger.Info("removing " + serviceName + " with " + clusters + " to listener map") key := util.GetServiceCacheKey(serviceName, clusters) + defer ed.mux.Unlock() + ed.mux.Lock() funcs, ok := ed.callbackFuncMap.Get(key) if ok && funcs != nil { var newFuncs []*func(services []model.Instance, err error) diff --git a/clients/naming_client/naming_cache/subscribe_callback_test.go b/clients/naming_client/naming_cache/subscribe_callback_test.go index fce3354a..6bcef6cd 100644 --- a/clients/naming_client/naming_cache/subscribe_callback_test.go +++ b/clients/naming_client/naming_cache/subscribe_callback_test.go @@ -30,25 +30,6 @@ import ( ) func TestEventDispatcher_AddCallbackFuncs(t *testing.T) { - service := model.Service{ - Clusters: strings.Join([]string{"default"}, ","), - CacheMillis: 10000, - Checksum: "abcd", - LastRefTime: uint64(time.Now().Unix()), - } - var hosts []model.Instance - host := model.Instance{ - Enable: true, - InstanceId: "123", - Port: 8080, - Ip: "127.0.0.1", - Weight: 10, - ServiceName: "public@@Test", - ClusterName: strings.Join([]string{"default"}, ","), - } - hosts = append(hosts, host) - service.Hosts = hosts - ed := NewSubscribeCallback() param := vo.SubscribeParam{ ServiceName: "Test", @@ -70,25 +51,6 @@ func TestEventDispatcher_AddCallbackFuncs(t *testing.T) { } func TestEventDispatcher_RemoveCallbackFuncs(t *testing.T) { - service := model.Service{ - Clusters: strings.Join([]string{"default"}, ","), - CacheMillis: 10000, - Checksum: "abcd", - LastRefTime: uint64(time.Now().Unix()), - } - var hosts []model.Instance - host := model.Instance{ - Enable: true, - InstanceId: "123", - Port: 8080, - Ip: "127.0.0.1", - Weight: 10, - ServiceName: "public@@Test", - ClusterName: strings.Join([]string{"default"}, ","), - } - hosts = append(hosts, host) - service.Hosts = hosts - ed := NewSubscribeCallback() param := vo.SubscribeParam{ ServiceName: "Test", @@ -170,6 +132,6 @@ func TestSubscribeCallback_ServiceChanged(t *testing.T) { }, } ed.AddCallbackFunc(util.GetGroupName(param2.ServiceName, param2.GroupName), strings.Join(param2.Clusters, ","), ¶m2.SubscribeCallback) - cacheKey := util.GetServiceCacheKey(util.GetGroupName(service.Name, service.GroupName), service.Clusters) + cacheKey := util.GetServiceCacheKey(service.Name, service.Clusters) ed.ServiceChanged(cacheKey, &service) }