@Override
  public void run() {
    EntryLogger.setSource(serverId, "RI");
    boolean addedListener = false;
    try {
      if (system instanceof InternalDistributedSystem) {
        ((InternalDistributedSystem) system).addDisconnectListener(this);
        addedListener = true;
      }

      if (!waitForCache()) {
        logger.warn("{}: no cache (exiting)", this);
        return;
      }
      processMessages();

    } catch (CancelException ignore) {
      // just bail

    } finally {
      if (addedListener) {
        ((InternalDistributedSystem) system).removeDisconnectListener(this);
      }
      close();
      EntryLogger.clearSource();
    }
  }
Performs the work of the client update thread. Creates a {@code ServerSocket} and waits for the
server to connect to it.
geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/CacheClientUpdater.java