boolean isReady() {
        final GroupDetails[] ds = destinations.get();
        if(ds == null)
            return false;
        for(final GroupDetails d: ds)
            if(d == null)
                return false;

        final boolean ret = ds.length != 0 && getIndex(ds, clusterName) >= 0; // this method is only called in tests and this needs to be true there.

        if(ret && LOGGER.isDebugEnabled())
            LOGGER.debug("at {} to {} is Ready " + shorthand(cvrt(ds, clusterName)), thisNodeId, clusterId);

        return ret;
    }
boolean isReady ( ) { final GroupDetails [ ] ds = destinations . get ( ) ; if ( ds == null ) return false ; for ( final GroupDetails d : ds ) if ( d == null ) return false ; final boolean ret = ds . length != 0 && getIndex ( ds , clusterName ) >= 0 ; if ( ret && LOGGER . isDebugEnabled ( ) ) LOGGER . debug ( "at {} to {} is Ready " + shorthand ( cvrt ( ds , clusterName ) ) , thisNodeId , clusterId ) ; return ret ; }
This makes sure all of the destinations are full.