private void onSuspend ( final List < Address > members ) { Message msg = null ; Collection < Address > participantsInFlush = null ; synchronized ( sharedLock ) { flushCoordinator = localAddress ; // start FLUSH only on group members that we need to flush participantsInFlush = members ; participantsInFlush . retainAll ( currentView . getMembers ( ) ) ; flushMembers . clear ( ) ; flushMembers . addAll ( participantsInFlush ) ; flushMembers . removeAll ( suspected ) ; msg = new Message ( null ) . src ( localAddress ) . setBuffer ( marshal ( participantsInFlush , null ) ) . putHeader ( this . id , new FlushHeader ( FlushHeader . START_FLUSH , currentViewId ( ) ) ) ; } if ( participantsInFlush . isEmpty ( ) ) { flush_promise . setResult ( SUCCESS_START_FLUSH ) ; } else { down_prot . down ( msg ) ; if ( log . isDebugEnabled ( ) ) log . debug ( localAddress + ": flush coordinator " + " is starting FLUSH with participants " + participantsInFlush ) ; } }
Starts the flush protocol