Slide 55
Slide 55 text
Garbage Collection
An update f will sometimes add some information r(f) to the payload in order to deal cleanly with
operations concurrent with f. As an example, in the Add-Remove Partial Order of Section 3.4.2,
remove leaves a tombstone in order to allow addBetweens to proceed.
Once f is stable, i.e., all operations concurrent with f have been delivered, r(f) serves no useful
purpose. A GC opportunity exists to detect this condition and discard r(f).
Liveness of Φ requires that the set of replicas be known and that they not crash per-
manently (undetectably). Under these assumptions, the stability algorithm of Wuu and
Bernstein [44] can be adapted. The algorithm assumes causal delivery. An update g has an
associated vector clock v(g). Replica xi maintains the last vector clock value received from
every other replica x , noted V min(j), which identifies all updates that x knows to have been
delivered by x . Replica must periodically propagate its vector clock to update V min values,
possibly by sending empty messages. With this information, (∀j : V min(j) ≥ v(f)) 㱺 Φ (f).
Importantly, the information required is typically already used by a reliable delivery mech-
anism, and GC can be performed in the background.
Sunday, July 1, 12