diff --git a/registry/etcdv3/registry.go b/registry/etcdv3/registry.go
index a94352c6653fa0c993ee540ba6229fd3242f41ba..a65d090349b40d473c769e3130e4f000ee03bd00 100644
--- a/registry/etcdv3/registry.go
+++ b/registry/etcdv3/registry.go
@@ -119,14 +119,8 @@ func (r *etcdV3Registry) DoUnregister(root string, node string) error {
 }
 
 func (r *etcdV3Registry) CloseAndNilClient() {
-	r.cltLock.Lock()
-	client := r.client
+	r.client.Close()
 	r.client = nil
-	r.cltLock.Unlock()
-	if client == nil {
-		return
-	}
-	client.Close()
 }
 
 func (r *etcdV3Registry) CloseListener() {
diff --git a/registry/kubernetes/registry.go b/registry/kubernetes/registry.go
index 4c59fc080b2b768e2ebf28c1a85c6a996393d36a..7ee0f6b0eeb83181bfd20e1abe4685e8319cd09b 100644
--- a/registry/kubernetes/registry.go
+++ b/registry/kubernetes/registry.go
@@ -81,14 +81,8 @@ func (r *kubernetesRegistry) SetClient(client *kubernetes.Client) {
 }
 
 func (r *kubernetesRegistry) CloseAndNilClient() {
-	r.cltLock.Lock()
-	client := r.client
+	r.client.Close()
 	r.client = nil
-	r.cltLock.Unlock()
-	if client == nil {
-		return
-	}
-	client.Close()
 }
 
 func (r *kubernetesRegistry) CloseListener() {
diff --git a/registry/zookeeper/registry.go b/registry/zookeeper/registry.go
index fd6ef86e77afb13c250f63d7e87a8de46d3d73cb..32f9fe7a293b9b93687dc46bdedc6c044421927a 100644
--- a/registry/zookeeper/registry.go
+++ b/registry/zookeeper/registry.go
@@ -176,15 +176,8 @@ func (r *zkRegistry) DoUnsubscribe(conf *common.URL) (registry.Listener, error)
 }
 
 func (r *zkRegistry) CloseAndNilClient() {
-	r.cltLock.Lock()
-	client := r.client
+	r.client.Close()
 	r.client = nil
-	r.cltLock.Unlock()
-
-	if client == nil {
-		return
-	}
-	client.Close()
 }
 
 func (r *zkRegistry) ZkClient() *zookeeper.ZookeeperClient {