(Illustration by Gaich Muramatsu)
On Tue, Jul 05, 2005 at 09:33:50AM -0600, Patrick Walsh wrote: > Huh. OK, thanks for explaining how this works. I don't suppose we > could then auto-resolve again so that we wound up with this: > > server1 server2 > Initial state [0 0] [0 0] > Store foo [1 0] [0 1] > Resolve [1 1] [1 1] > COP2 [1 2] [2 1] > Resolve [2 2] [2 2] > > ? Yes, resolution would fix the problem. However, the COP2 doesn't generate a callback message. So there is no reason for clients to refetch the attributes and as a result, the conflict isn't detected until it is too late. And because all your clients are probably fairly synchronized in the accesses (cronjob?) they probably all refreshed their cached data within that same 15 second window between the store and the cop2 messages where the resolve occurred. The first client would trigger the resolve, and everyone would have gotten the attributes with the [1 1] version vector. Now is a client happened to not have this file cached, or was disconnected, it would fetch or revalidate the object, notice the conflict, and trigger the second resolve. But we can't rely on that. JanReceived on 2005-07-05 12:58:58