public void exchangeRemoteLocators() {
    int retryAttempt = 1;
    while (!discoverer.isStopped()) {
      try {
        RemoteLocatorJoinResponse response = (RemoteLocatorJoinResponse) locatorClient
            .requestToServer(locatorId.getHost(), request, WAN_LOCATOR_CONNECTION_TIMEOUT, true);
        if (response != null) {
          addExchangedLocators(response);
          logger.info(
              "Locator discovery task for locator {} exchanged locator information with {}: {}.",
              request.getLocator().marshalForClients(), locatorId.marshalForClients(),
              response.getLocators());
          RemoteLocatorPingRequest pingRequest = new RemoteLocatorPingRequest("");
          while (true) {
            if (!skipWaiting) {
              Thread.sleep(WAN_LOCATOR_PING_INTERVAL);
            }
            RemoteLocatorPingResponse pingResponse = (RemoteLocatorPingResponse) locatorClient
                .requestToServer(new HostAndPort(locatorId.getHostName(), locatorId.getPort()),
                    pingRequest, WAN_LOCATOR_CONNECTION_TIMEOUT, true);
            if (pingResponse != null) {
              continue;
            }
            break;
          }
        }
      } catch (IOException ioe) {
        if (retryAttempt == WAN_LOCATOR_CONNECTION_RETRY_ATTEMPT) {
          logger.fatal(
              "Locator discovery task for locator {} could not exchange locator information with {} after {} retry attempts.",
              request.getLocator().marshalForClients(), locatorId.marshalForClients(), retryAttempt,
              ioe);
          break;
        }
        if (skipFailureLogging(locatorId)) {
          logger.warn(
              "Locator discovery task for locator {} could not exchange locator information with {} after {} retry attempts. Retrying in {} ms.",
              request.getLocator().marshalForClients(), locatorId.marshalForClients(), retryAttempt,
              WAN_LOCATOR_CONNECTION_INTERVAL);
        }
        try {
          if (!skipWaiting) {
            Thread.sleep(WAN_LOCATOR_CONNECTION_INTERVAL);
          }
        } catch (InterruptedException e) {
          Thread.currentThread().interrupt();
        }
        retryAttempt++;
      } catch (ClassNotFoundException | ClassCastException ex) {
        logger.fatal("Locator discovery task encountered unexpected exception", ex);
        break;
      } catch (InterruptedException e) {
        Thread.currentThread().interrupt();
      }
    }
  }
The maximum interval for logging failures of the same event in millis.
geode-wan/src/main/java/org/apache/geode/cache/wan/internal/client/locator/LocatorDiscovery.java