pijul nest
guest [sign in]

Writing the reference counts when committing

[?]
Feb 21, 2021, 7:14 PM
3QM7P3RRVYYDEJNFDG3GHZDMSSHPPJC3WQOJGETGREOM4I2A6D5AC

Dependencies

  • [2] E4MD6T3L Proofreading and commenting of this crate (massive bug fixes included)
  • [3] YXKP4AIW New file locks, with multiple sets of free pages
  • [4] WS4ZQM4R Debugging, tests, etc.
  • [5] W2MIZD5B Single file databases + CRC for the root pages (checking the other pages makes everything very slow)
  • [6] OP6SVMOD Resetting history
  • [7] YWFYZNLZ Cleanup + inter-process concurrency
  • [8] AOX2XQIS Actually, with the correct functions, Unsized pages are always slower than Sized pages (especially for writing)

Change contents

  • replacement in sanakirja/src/environment/muttxn.rs at line 19
    [2.6897][3.80352:80367](),[3.2774][3.80352:80367](),[3.80352][3.80352:80367]()
    parent: T,
    [2.6897]
    [3.2551]
    parent: Option<T>,
  • replacement in sanakirja/src/environment/muttxn.rs at line 56
    [3.80987][3.80987:81041](),[3.81041][2.7736:7888]()
    let env = self.env.borrow();
    unsafe {
    env.mut_txn_unlock().unwrap_or(());
    env.roots[self.root].rw.unlock_exclusive();
    env.unlock(self.root).unwrap_or(())
    [3.80987]
    [3.81129]
    if self.parent.is_none() {
    let env = self.env.borrow();
    unsafe {
    env.mut_txn_unlock().unwrap_or(());
    env.roots[self.root].rw.unlock_exclusive();
    env.unlock(self.root).unwrap_or(())
    }
  • replacement in sanakirja/src/environment/muttxn.rs at line 78
    [3.37356][3.81411:81511](),[3.81411][3.81411:81511]()
    self.parent.length = self.length;
    self.parent.free = self.free;
    self.parent
    [3.37356]
    [3.81511]
    let parent = self.parent.as_mut().unwrap();
    parent.length = self.length;
    parent.free = self.free;
    parent.rc = self.rc.take();
    parent
  • replacement in sanakirja/src/environment/muttxn.rs at line 85
    [3.37415][3.81609:81773](),[3.81609][3.81609:81773]()
    self.parent
    .free_owned_pages
    .extend(self.free_owned_pages.iter());
    self.parent.free_pages.extend(self.free_pages.iter());
    [3.37415]
    [3.81773]
    parent.free_owned_pages.extend(self.free_owned_pages.iter());
    parent.free_pages.extend(self.free_pages.iter());
  • replacement in sanakirja/src/environment/muttxn.rs at line 89
    [3.81852][3.81852:81894]()
    self.parent.roots[u] = *v
    [3.81852]
    [3.81894]
    parent.roots[u] = *v
  • replacement in sanakirja/src/environment/muttxn.rs at line 94
    [3.2918][3.2918:3032]()
    if self.parent.roots.get(n).is_none() {
    self.parent.roots.resize(n + 1, 0u64)
    [3.2918]
    [3.3032]
    if parent.roots.get(n).is_none() {
    parent.roots.resize(n + 1, 0u64)
  • replacement in sanakirja/src/environment/muttxn.rs at line 97
    [3.3050][3.3050:3091]()
    self.parent.roots[n] = r
    [3.3050]
    [3.3091]
    parent.roots[n] = r
  • replacement in sanakirja/src/environment/muttxn.rs at line 175
    [2.10496][3.83583:83611](),[3.83583][3.83583:83611]()
    parent: (),
    [2.10496]
    [2.10497]
    parent: None,
  • edit in sanakirja/src/environment/muttxn.rs at line 279
    [2.14151]
    [2.14151]
    if let Some(ref rc_db) = self.rc {
    debug!("COMMIT: rc_db = 0x{:x}", rc_db.db);
    globptr.rc_db = rc_db.db.to_le();
    }