private List<ServerLocation> getLocators() {
    if (cachedLocators != null) {
      return cachedLocators;
    } else {
      synchronized (cachedLocatorsLock) {
        List<ControllerProfile> profiles = advisor.fetchControllers();
        List<ServerLocation> result = new ArrayList<>(profiles.size() + 1);
        for (ControllerProfile profile : profiles) {
          result.add(buildServerLocation(profile));
        }
        result.add(new ServerLocation(hostNameForClients, port));
        cachedLocators = result;
        return result;
      }
    }
  }
A ServerLocator may be in place but non-functional during auto-reconnect because peer location
services have been initialized while the servers reconnect but server location services aren't
reconnected until a cache is available
geode-core/src/main/java/org/apache/geode/distributed/internal/ServerLocator.java