private void launchRestartThread() {
    String threadName = "Location services restart thread";
    restartThread = new LoggingThread(threadName, () -> {
      synchronized (servicesRestartLock) {
        stoppedForReconnect = true;
        boolean restarted = false;
        try {
          restarted = attemptReconnect();
          logger.info("attemptReconnect returned {}", restarted);
        } catch (InterruptedException e) {
          logger.info("attempt to restart location services was interrupted", e);
        } catch (IOException e) {
          logger.info("attempt to restart location services terminated", e);
        } finally {
          shutdownHandled.set(false);
          if (!restarted) {
            stoppedForReconnect = false;
          }
          reconnected = restarted;
          restartThread = null;
        }
      }
    });
    restartThread.start();
  }
launch a thread that will restart location services
geode-core/src/main/java/org/apache/geode/distributed/internal/InternalLocator.java