// Example: {A}, B joins, after returning JoinRsp to B, A garbage collects messages higher than those
// in the digest returned to the client, so the client will *not* be able to ask for retransmission
// of those messages if he misses them
if(hasJoiningMembers) {
gms.getDownProtocol().down(new Event(Event.SUSPEND_STABLE, MAX_SUSPEND_TIMEOUT));
Digest tmp=gms.getDigest(); // get existing digest
MutableDigest join_digest=null;
if(tmp == null){
log.error("received null digest from GET_DIGEST: will cause JOIN to fail");
}
else {
// create a new digest, which contains the new member
join_digest=new MutableDigest(tmp.size() + new_mbrs.size());
join_digest.add(tmp); // add the existing digest to the new one
for(Address member:new_mbrs)
join_digest.add(member, 0, 0); // ... and add the new members. their first seqno will be 1
}
join_rsp=new JoinRsp(new_view, join_digest != null? join_digest.copy() : null);