In RpcClient, we cache the connection to each region server. When the connection goes bad, it stays in the cache till it's removed. Before it's removed, new calls will try to use it and just fail. The connection is a thread. It could be stuck in trying to receive some response. Before this receiving thread times out, it won't remove itself from the cache.
It will be better to interrupt the receiving thread and let it clean up sooner.