Fixing zombie conflicts: known was computed on the wrong thing

pmeunier
May 13, 2022, 8:48 AM
L4EZSH6BBU46PVEG2HRPKIMIX7HUXUUEX5PGYYW2I3GXWKSFZAHAC

Dependencies

  • [2] RSFUX6ML Correct find_alive cache system
  • [3] ZJWCPRMH Fixing known patches in deleted contexts
  • [4] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).
  • [5] IXC43DSH Fixing a bug in unrecord
  • [6] ZDK3GNDB Tag transactions (including a massive refactoring of errors)
  • [7] 422NG2MT Fixing a confusion on filename conflicts, where some names could be mistakenly treated as zombies
  • [8] I24UEJQL Various post-fire fixes
  • [*] VO5OQW4W Removing anyhow in libpijul

Change contents

  • edit in libpijul/src/unrecord/mod.rs at line 446
    [3.98]
    [3.98]
    if h == &hash {
    return true
    }
  • replacement in libpijul/src/unrecord/mod.rs at line 450
    [3.162][3.162:353]()
    // When reintroducing a deleted flag, check whether
    // the re-introduction patch knows about the alive
    // edges around the target.
    [3.162]
    [3.353]
    // When reintroducing an edge that was deleted,
    // check whether the re-introduction patch knows
    // about the alive edges around the target.
  • edit in libpijul/src/find_alive.rs at line 43
    [2.3653]
    [2.3653]
    // A `None` in the cache means that the vertex
    // itself (the cache key) is alive.
  • edit in libpijul/src/changestore/mod.rs at line 58
    [10.33997]
    [4.818914]
    debug!("knows: {:?} {:?}", hash0, hash1);
  • edit in libpijul/src/apply/edge.rs at line 109
    [4.99100]
    [4.99100]
    // We're deleting a vertex n.to. If n has children or parents
    // that are unknown to the patch we're applying, zombify these
    // children and parents.
  • replacement in libpijul/src/apply/edge.rs at line 134
    [4.99690][4.99690:99729]()
    let intro = v.introduced_by();
    [4.99690]
    [4.99729]
    let intro = v.dest().change;
  • replacement in libpijul/src/apply/edge.rs at line 148
    [4.100116][4.100116:100159]()
    let intro = v.introduced_by();
    [4.100116]
    [3.2429]
    let intro = v.dest().change;
  • replacement in libpijul/src/apply/edge.rs at line 341
    [4.106225][4.106225:106308]()
    let intro = txn.get_external(&v.introduced_by())?.unwrap().into();
    [4.106225]
    [4.106308]
    let intro = txn.get_external(&v.dest().change)?.unwrap().into();