public void getRemoteLiveNodes() throws KeeperException, InterruptedException {
		List<String> nodes = zkClient.getChildren(ZkStateReader.LIVE_NODES_ZKNODE, new Watcher() {

			@Override
			public void process(WatchedEvent event) {
				// session events are not change events,
				// and do not remove the watcher
				if (EventType.None.equals(event.getType())) {
					return;
				}
				try {
					System.out.println("ZkStateReader.getLiveNodes().new Watcher() {...}.process()----------");
					synchronized (ZkStateReader.this.getUpdateLock()) {
						List<String> nodes = zkClient.getChildren(LIVE_NODES_ZKNODE, this, true);
						
						ZkStateReader.this.liveNodes.addAll(nodes);
						
					}
				} catch (KeeperException e) {
					if (e.code() == KeeperException.Code.SESSIONEXPIRED
							|| e.code() == KeeperException.Code.CONNECTIONLOSS) {
						log.warn("ZooKeeper watch triggered, but Solr cannot talk to ZK");
						return;
					}
					log.error("", e);
					throw new ZooKeeperException(CeException.ErrorCode.SERVER_ERROR, "", e);
				} catch (InterruptedException e) {
					// Restore the interrupted status
					Thread.currentThread().interrupt();
					log.warn("", e);
					return;
				}
			}

		}, true);
		
		ZkStateReader.this.liveNodes.addAll(nodes);
		
	}