> ​Given the rf is 3, r/w cl is quorum. > Initially, the list is empty, the user appends one element into the list: > list += [foo] > Then node A is down, and the user prepends another element:
list = [bar] + list Then A comes back, assuming the list on A is still [foo], and the list on nodeB and nodeC is [bar, foo] > The user needs to modify the first element: > list[0] = foobar > Then what happens? > A modifies the foo to foobar, and B/C modifies bar to foobar? > Then when they are repaired, the final list version becomes: > [foobar, foobar]? It will read from other replicas up to the CL (as you've pointed out). It merges the results of the reads with the update you make and should generate the correct output. There should be a timestamp associated with each cell, and when it does the merge B's [bar] will win, and the result should be [foobar, foo]. I haven't tested this but should be the overall result after repair.