Fixing an "asynchronous race condition" in libpijul, where deleted conflict-solving vertices can be misclassified as alive during patch application

pmeunier
Jul 4, 2021, 3:35 PM
NUMESMN7JRZSQFKPPZBZKCNJALFM5PX4Y2YUUXXOU2VQHNTNEDPAC

Dependencies

  • [2] I24UEJQL Various post-fire fixes
  • [3] CCLLB7OI Upgrading to Sanakirja 0.15 + version bump
  • [4] GHO6DWPI Refactoring iterators
  • [5] IXC43DSH Fixing a bug in unrecord
  • [*] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).

Change contents

  • edit in libpijul/src/pristine/mod.rs at line 1591
    [3.55422][2.70343:70447]()
    /// Delete a key and a value from a graph. Returns `true` if and only if `(k, v)` was in the graph.
  • replacement in libpijul/src/apply/edge.rs at line 220
    [2.103394][2.103394:103430]()
    || p.is_empty()
    [2.103394]
    [2.103430]
    || (p.is_empty() && !e.flag().contains(EdgeFlags::PSEUDO))