Digest on view changes ====================== Author: Bela Ban Version: $Id: Digest.txt,v 1.1 2006/01/26 09:23:16 belaban Exp $ With STATE_TRANSFER we disable message garbage collection with SUSPEND_STABLE for the duration of the state transfer and later resume it with RESUME_STABLE. However, we don't do this for regular view changes, e.g. when a new member joins. The problem is: - Member A is in the group - Member B joins - Member A (as coord) sent 5 messages and therefore returns 5 as digest (assuming it has received all 5 messages yet) - Member B receives the JoinRsp and installs the digest of A:5 - In the meantime, member A sent another 10 messages, which triggered garbage collection of messages A:0 - A:13 (just as example), so A has only messages 13-15 in its sent_table - A sends another message (A:16) - Upon reception of A:16, B requests retransmission of A:6 - A:16 - A will not be able to serve that request because it garbage collected messages up to 13 SOLUTION: - Same as with STATE_TRANSFER: - On JOIN request, send down a SUSPEND_STABLE - When JOIN request handling has processed (e.g. after receiving all VIEW_ACKs ?), send a RESUME_STABLE down - Does this need to be done only on JOIN or also on LEAVE ?