public InetSocketAddress next()

in kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/src/main/java/org/apache/zookeeper/client/StaticHostProvider.java [142:169]


  public InetSocketAddress next(long spinDelay) {
    currentIndex = ++currentIndex % serverAddresses.size();
    if (currentIndex == lastIndex && spinDelay > 0) {
      try {
        Thread.sleep(spinDelay);
      } catch (InterruptedException e) {
        LOG.warn("Unexpected exception", e);
      }
    } else if (lastIndex == -1) {
      // We don't want to sleep on the first ever connect attempt.
      lastIndex = 0;
    }

    InetSocketAddress curAddr = serverAddresses.get(currentIndex);
    try {
      String curHostString = curAddr.getHostString();
      List<InetAddress> resolvedAddresses =
          new ArrayList<InetAddress>(Arrays.asList(this.resolver.getAllByName(curHostString)));
      if (resolvedAddresses.isEmpty()) {
        return curAddr;
      }
      Collections.shuffle(resolvedAddresses);
      return new InetSocketAddress(resolvedAddresses.get(0), curAddr.getPort());
    } catch (UnknownHostException e) {
      LOG.error("Unable to resolve address: {}", curAddr, e);
      return curAddr;
    }
  }