(Illustration by Gaich Muramatsu)
On Thu, Feb 27, 2003 at 06:15:54PM -0500, Brian White wrote: > All the client/servers at site X (servers A, B, and C) can communicate over > fast ethernet, as can the client/servers at site Y (servers D and E) but > there is only a slow link between the two sites. > > When a client on site Y changes a file, does it try to > > a) push that change to all five servers If the 'observed' bandwidth of the link to the servers A,B, and C is above the weak-connected threshold (about 64kB/s) the Coda client pushes updates to all servers. > b) push that change to both local servers (D and E) and let them deal with > propogating to the other site > c) push that change to the closest server and let it deal with propogating > it to all the other servers If the available bandwidth is insufficient, Coda stores writes locally and in the background reintegrates with a single server, although it typically tries to send updates to the server that appears to have the best connectivity. When the reintegration completes, the client triggers server-server resolution which propagates the update to all other servers. server-server resolution goes is several phases, where the chosen resolution 'master' collects data from all other servers, computes the recipe to resolve and redistributes the result. After that it validates whether the resultion succeeded by copying back all versions and finally marks the resolution as successful. So in reality you are probably worse off by letting the servers resolve over the slow link because the data is shuttled back and forth several times. Typically servers that share the responsibility for a volume are located at the same location. In your case you would either have 2 volume storage groups, with some volumes on A/B/C and others on D/E. Clients at site Y would typically be weakly connected to A/B/C and have strong connectivity to D/E. JanReceived on 2003-02-27 22:30:03