(Illustration by Gaich Muramatsu)
I hope that someone answers this as I've struggled with it for some time. The maintenance of version vectors for detecting write/write conflicts in Coda as described in Tanenbaum and Van Steen's *Distributed Systems* book (p. 617) seems to be different than the scheme alluded to by Jim Kistler in his Ph.D. thesis (p. 45) which seems to be that of LOCUS (Scott Parker et al 1983). Yet, it seems (I may be totally incorrect) that both schemes detect conflicts correctly because the DAG induced by the partition graph works with both schemes (given the usual notion of vector dominance). If that's true, which one does Coda use and why does it prefer one over the other? As an example, consider three replicas A, B, C and a file f. F's initial VV is [1,1,1] at all locations. A&B now get partitioned from C and make an update to f. What's the resulting VV's for f? Tanenbaum & Van Steen: A: [2,2,1] B: [2,2,1] C: [1,1,1] Scott Parker, Gerry Popek et. al: A: [2,1,1] B: [2,1,1] C: [1,1,1] Here, I've (arbitrarily) considered the update in the A&B partition to be initiated by A. It could've been considered as an update by B. Thanks a lot, Sandeep KumarReceived on 2004-07-19 03:12:07