@Override
    public void run() {
      try {
        while (!Thread.interrupted()) {
          int curUpdateIntervalMS = updaterIntervalNoMasterMS;

          try {
            updateAll();

            updateInetAddresses();

            ReplicaSet replicaSet =
                new ReplicaSet(createNodeList(), _random, slaveAcceptableLatencyMS);
            _replicaSetHolder.set(replicaSet);

            if (replicaSet.hasMaster()) {
              _mongo.getConnector().setMaster(replicaSet.getMaster());
              curUpdateIntervalMS = updaterIntervalMS;
            }
          } catch (Exception e) {
            _logger.get().log(Level.WARNING, "couldn't do update pass", e);
          }

          Thread.sleep(curUpdateIntervalMS);
        }
      } catch (InterruptedException e) {
        // Allow thread to exit
      }

      _replicaSetHolder.close();
      closeAllNodes();
    }
 public String toString() {
   ReplicaSet cur = this.members;
   if (cur != null) {
     return cur.toString();
   }
   return "none";
 }