code: private ClusterableServer getRandomServer(final List<ServerDescription> serverDescriptions) {
          while (!serverDescriptions.isEmpty()) {
              int serverPos = getRandom().nextInt(serverDescriptions.size());
              ClusterableServer server = getServer(serverDescriptions.get(serverPos).getAddress());
              if (server != null) {
                  return server;
              } else {
                  serverDescriptions.remove(serverPos);
              }
          }
          return null;
      }
docs: gets a random server that still exists in the cluster.  Returns null if there are none.