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 ; }
gets a random server that still exists in the cluster . Returns null if there are none .