} return false;
throw ex;
    private boolean doExecute(long timeout) {        long start_time=0;        Address suspect;        req_id=getRequestId();        reset(null); // clear 'responses' array        synchronized(requests) {            for(int i=0; i < suspects.size(); i++) {  // mark all suspects in 'received' array                suspect=(Address)suspects.elementAt(i);                Rsp rsp=(Rsp)requests.get(suspect);                if(rsp != null) {                    rsp.setSuspected(true);                    break; // we can break here because we ensure there are no duplicate members                }            }        }        try {            if(log.isTraceEnabled()) log.trace(new StringBuffer("sending request (id=").append(req_id).append(')'));            if(corr != null) {                java.util.List tmp=new Vector(members);                corr.sendRequest(req_id, tmp, request_msg, rsp_mode == GET_NONE? null : this);            }            else {                transport.send(request_msg);            }        }        catch(Throwable e) {            log.error("exception=" + e);            if(corr != null) {                corr.done(req_id);            }            return false;        }        synchronized(requests) {            if(timeout <= 0) {                while(true) { /* Wait for responses: */                    adjustMembership(); // may not be necessary, just to make sure...                    if(responsesComplete()) {                        if(corr != null) {                            corr.done(req_id);                        }                        if(log.isTraceEnabled()) {                            log.trace("received all responses: " + toString());                        }                        return true;                    }                    try {                        requests.wait();                    }                    catch(Exception e) {                    }                }            }            else {                start_time=System.currentTimeMillis();                while(timeout > 0) { /* Wait for responses: */                    if(responsesComplete()) {                        if(corr != null)                            corr.done(req_id);                        if(log.isTraceEnabled()) log.trace("received all responses: " + toString());                        return true;                    }                    timeout=timeout - (System.currentTimeMillis() - start_time);                    if(timeout > 0) {                        try {                            requests.wait(timeout);                        }                        catch(Exception e) {                        }                    }                }                if(corr != null) {                    corr.done(req_id);                }                return false;            }        }    }