private void waitForSlaveUpdates(
			List<Future<ReplicationResult>> replicatedSlaveFutures) {

		List<ReplicationResult> slaveServers = new ArrayList<ReplicationResult>();
		for (Future<ReplicationResult> slaveServer : replicatedSlaveFutures) {
			try {
				// block until the future result is available
				slaveServers.add(slaveServer.get());
				// the exceptions are being ignored without over complicating
				// failure modes, startup and recovery
			} catch (InterruptedException e) {
				// Current thread was interrupted
				e.printStackTrace();
			} catch (ExecutionException e) {
				// This should never be thrown
				e.printStackTrace();
			}
		}

		for (ReplicationResult slaveServer : slaveServers) {
			if (!slaveServer.isReplicationSuccessful()) {
				// Remove the server from the list of servers - fail stop model
				this.slaveServers.remove(slaveServer.getServerAddress());
			}
		}
	}