diff --git a/host_source.go b/host_source.go
index <HASH>..<HASH> 100644
--- a/host_source.go
+++ b/host_source.go
@@ -121,15 +121,9 @@ type HostInfo struct {
 }
 
 func (h *HostInfo) Equal(host *HostInfo) bool {
-	h.mu.RLock()
-	defer h.mu.RUnlock()
-	//If both hosts pointers are same then lock is required only once because of below reasons:
-	//Reason 1: There is no point taking lock twice on same mutex variable.
-	//Reason 2: It may lead to deadlock e.g. if WLock is requested by other routine in between 1st & 2nd RLock
-	//So WLock will be blocked on 1st RLock and 2nd RLock will be blocked on requested WLock.
-	if h != host {
-		host.mu.RLock()
-		defer host.mu.RUnlock()
+	if h == host {
+		// prevent rlock reentry
+		return true
 	}
 
 	return h.ConnectAddress().Equal(host.ConnectAddress())
hostinfo: fix rlock reentry (#<I>)