diff --git a/remoting/zookeeper/client.go b/remoting/zookeeper/client.go index 25198061596d9f243bcbc21f1632ab75ab30028e..0e3e502115dee3e1ee1f98f070774fe98b009ac7 100644 --- a/remoting/zookeeper/client.go +++ b/remoting/zookeeper/client.go @@ -299,30 +299,26 @@ func (z *ZookeeperClient) UnregisterEvent(zkPath string, event *chan struct{}) { if zkPath == "" { return } - z.Lock() - //for { - a, ok := z.eventRegistry[zkPath] + defer z.Unlock() + infoList, ok := z.eventRegistry[zkPath] if !ok { return - //break } - for i, e := range a { + for i, e := range infoList { if e == event { - arr := a - a = append(arr[:i], arr[i+1:]...) + arr := infoList + infoList = append(arr[:i], arr[i+1:]...) logger.Debugf("zkClient{%s} unregister event{path:%s, event:%p}", z.name, zkPath, event) } } logger.Debugf("after zkClient{%s} unregister event{path:%s, event:%p}, array length %d", - z.name, zkPath, event, len(a)) - if len(a) == 0 { + z.name, zkPath, event, len(infoList)) + if len(infoList) == 0 { delete(z.eventRegistry, zkPath) } else { - z.eventRegistry[zkPath] = a + z.eventRegistry[zkPath] = infoList } - //} - z.Unlock() } func (z *ZookeeperClient) Done() <-chan struct{} {