diff --git a/registry/etcdv3/registry.go b/registry/etcdv3/registry.go
index a2722a2e67c22f3e3d9380849a9a256fd2ebbaa0..a65d090349b40d473c769e3130e4f000ee03bd00 100644
--- a/registry/etcdv3/registry.go
+++ b/registry/etcdv3/registry.go
@@ -115,7 +115,7 @@ func (r *etcdV3Registry) DoRegister(root string, node string) error {
 }
 
 func (r *etcdV3Registry) DoUnregister(root string, node string) error {
-	return r.client.Delete(path.Join(root, node))
+	return perrors.New("DoUnregister is not support in etcdV3Registry")
 }
 
 func (r *etcdV3Registry) CloseAndNilClient() {
diff --git a/registry/kubernetes/registry.go b/registry/kubernetes/registry.go
index e64f9acb07b68275edb464bcd983d507658acc2f..7ee0f6b0eeb83181bfd20e1abe4685e8319cd09b 100644
--- a/registry/kubernetes/registry.go
+++ b/registry/kubernetes/registry.go
@@ -108,8 +108,7 @@ func (r *kubernetesRegistry) DoRegister(root string, node string) error {
 }
 
 func (r *kubernetesRegistry) DoUnregister(root string, node string) error {
-	panic("DoUnregister is not support in kubernetesRegistry")
-	return nil
+	return perrors.New("DoUnregister is not support in kubernetesRegistry")
 }
 
 func (r *kubernetesRegistry) DoSubscribe(svc *common.URL) (registry.Listener, error) {
diff --git a/registry/zookeeper/registry.go b/registry/zookeeper/registry.go
index f51ec671861ecb5fd894f0a7cbbe8883536b491f..e68265068bc2f3c60b57fc134e49ec08baef7900 100644
--- a/registry/zookeeper/registry.go
+++ b/registry/zookeeper/registry.go
@@ -279,12 +279,9 @@ func (r *zkRegistry) getCloseListener(conf *common.URL) (*RegistryConfigurationL
 
 		zkListener, _ := configurationListener.(*RegistryConfigurationListener)
 		if zkListener != nil {
-			r.listenerLock.Lock()
 			if zkListener.isClosed {
-				r.listenerLock.Unlock()
 				return nil, perrors.New("configListener already been closed")
 			}
-			r.listenerLock.Unlock()
 		}
 	}
 
@@ -299,6 +296,7 @@ func (r *zkRegistry) getCloseListener(conf *common.URL) (*RegistryConfigurationL
 	r.listenerLock.Lock()
 	listener := r.listener
 	r.listener = nil
+	r.listenerLock.Unlock()
 
 	r.dataListener.Close()
 	listener.Close()