Feature #14032
openFeature #14031: EC overwrites
EC Overwrites: Phase 2: Peering support for ec overwrites
0%
Description
The current design for ec overwrites allows for replicas to be missing at the head of their log log entries in which they did not participate (if, for example, the replica is a data shard which was not overwritten by a particular update). Peering needs to be updated to handle this: it's no longer sufficient to choose the shortest log from the authoritative interval (since entries past the end of that log might have been committed if that replica did not participate). Instead, we must pull all logs from the authoritative interval back to last_update, extend each log until we hit an entry in which it should have participated, but didn't. The shortest of these extended logs then gives us our authoritative last_update and log.
First, GetInfo (and therefore find_best_info and friends) needs to be modified to pass on to the next step the set of candidate infos. GetLog should be split into GetLogReplicated and GetLogEC. GetLogReplicated simply pulls the longest candidate log (as we currently do for replicated). GetLogEC does the above. I think after that point we can simply continue on with the rest of peering.