diff --git a/remoting/zookeeper/listener.go b/remoting/zookeeper/listener.go
index 71d7948eb044e3e97803c3f8d3b3a261fd803510..4cafa4070527d051fb4c0e0d7e4f01304418f5be 100644
--- a/remoting/zookeeper/listener.go
+++ b/remoting/zookeeper/listener.go
@@ -242,6 +242,7 @@ func (l *ZkEventListener) listenDirEvent(zkPath string, listener remoting.DataLi
 			//When Zk disconnected, the Conn will be set to nil, so here need check the value of Conn
 			l.client.RLock()
 			if l.client.Conn == nil {
+				l.client.RUnlock()
 				break
 			}
 			content, _, err := l.client.Conn.Get(dubboPath)