As they already cached everything for connection registry in memory, the cluster connection can fetch the in memory data directly instead of go to zookeeper again.
This is an optimization to reduce the pressure on zookeeper.
For MasterRegistry, we do not want to use it as the ConnectionRegistry for our cluster connection because:
// We use ZKConnectionRegistry for all the internal communication, primarily for these reasons:
// - Decouples RS and master life cycles. RegionServers can continue be up independent of
// masters' availability.
// - Configuration management for region servers (cluster internal) is much simpler when adding
// new masters or removing existing masters, since only clients' config needs to be updated.
// - We need to retain ZKConnectionRegistry for replication use anyway, so we just extend it for
// other internal connections too.
The above comments are in our code, in the HRegionServer.cleanupConfiguration method.
But since now, masters and regionservers both implement the ClientMetaService interface, we are free to just let the ConnectionRegistry to make use of these in memory information directly, instead of going to zookeeper again.