protected boolean sendLeaveReqToCoord ( final Address coord ) { if ( coord == null ) { log . warn ( "%s: cannot send LEAVE request to null coord" , gms . getLocalAddress ( ) ) ; return false ; } Promise < Address > leave_promise = gms . getLeavePromise ( ) ; gms . setLeaving ( true ) ; log . trace ( "%s: sending LEAVE request to %s" , gms . local_addr , coord ) ; long start = System . currentTimeMillis ( ) ; sendLeaveMessage ( coord , gms . local_addr ) ; Address sender = leave_promise . getResult ( gms . leave_timeout ) ; if ( ! Objects . equals ( coord , sender ) ) return false ; long time = System . currentTimeMillis ( ) - start ; if ( sender != null ) log . trace ( "%s: got LEAVE response from %s in %d ms" , gms . local_addr , coord , time ) ; else log . trace ( "%s: timed out waiting for LEAVE response from %s (after %d ms)" , gms . local_addr , coord , time ) ; return true ; }
Sends a leave request to coord and blocks until a leave response has been received or the leave timeout has elapsed