On Wed, Jan 23, 2013 at 10:22:31AM -0800, Sijie Guo wrote: > I had explained this case when replying Flavio's comments. > > Use "b) distinguish entries added before fencing at time T and entries > added after that." rule I mentioned before, session id is the evidence to > distinguish entries added in different sessions. > > for your example, > > session 1 (client A) : m1 > session 2 (client B) : m2 > > this entry boundaries for different sessions is used by client to > distinguish entries added by different session. so when b1 serving reads > for m2, it should not respond its 'm2' entry, since it was added in session > 1 not session 2. So, the metadata update happens after recovery, rather than before recovery as it does now for fencing? i.e. it happens when we know what the LAC is but before we write any new entries of our own? But the fence occurs at the very start of recovery.
So, session 1 may not see the fencing (fences quorums go down, so it replaces them in the metadata). If this is the case, when session 2 tries to update the metadata, it should fails as version changed. This seems ok to me. It'll need some extensions to the wire protocol to carry session id with the messages, but I think this is ok. -Ivan
