pijul nest
guest [sign in]

Debugging/cleanup around cursors

[?]
Feb 4, 2021, 11:06 AM
UUUVNC4DWEEL7WV5IRPKPZ6HZMYCPA53XM7LJWICUD4E6GN37IRQC

Dependencies

  • [2] W26CFMAQ Improving safety of cursors
  • [3] PXF3R6SV Improving test coverage for btree::cursor
  • [4] WS4ZQM4R Debugging, tests, etc.
  • [5] OP6SVMOD Resetting history
  • [6] UAQX27N4 Tests
  • [7] APPY2E7M Unsized deletions + custom sizes back
  • [8] OTWDDJE7 Trait/type cleanup
  • [9] 6UVFCERM Formatting, debugging, etc.
  • [10] QEUTVAZ4 Splitting btree::page
  • [11] S4V4QZ5C Debugging reference-counting for put
  • [12] YWFYZNLZ Cleanup + inter-process concurrency
  • [13] 6DMPXOAT More debugging
  • [14] X3QVVQIS More debugging (del seems to work now)
  • [15] NQBEOCFO Tests cleanup
  • [16] DV4A2LR7 Double-inserts (rebalancing near an internal deletion)
  • [17] KMT3MF5N Drop a database
  • [18] FMN7X4J2 Micro-improvements, now noticeably faster than std::collections::BTreeMap
  • [19] ONES3V46 reference counting works for put
  • [*] H3FVSQIQ Unsized pages

Change contents

  • replacement in sanakirja-core/src/lib.rs at line 4
    [3.119][3.0:26]()
    pub trait Representable {
    [3.119]
    [3.148]
    pub trait Representable: core::fmt::Debug {
  • edit in sanakirja-core/src/btree/put.rs at line 47
    [3.4780]
    [3.4780]
    debug!("free = {:?}", free);
  • edit in sanakirja-core/src/btree/put.rs at line 81
    [3.304][2.51:81]()
    cursor.pop();
  • edit in sanakirja-core/src/btree/put.rs at line 82
    [2.123]
    [3.70]
    cursor.pop();
  • edit in sanakirja-core/src/btree/put.rs at line 118
    [3.470][2.191:221]()
    cursor.pop();
  • edit in sanakirja-core/src/btree/put.rs at line 119
    [2.263]
    [3.573]
    cursor.pop();
  • edit in sanakirja-core/src/btree/put.rs at line 162
    [3.92]
    [2.450]
    debug!("pointer {:?} {:?}", cursor.pointer(), cursor.first_rc_level);
  • replacement in sanakirja-core/src/btree/page.rs at line 474
    [3.9543][3.4147:4204]()
    unsafe fn lookup<T, K: Representable, V: Representable>(
    [3.9543]
    [3.9608]
    unsafe fn lookup<T, K: Representable + core::fmt::Debug, V: Representable + core::fmt::Debug>(
  • edit in sanakirja-core/src/btree/page.rs at line 491
    [21.45837]
    [21.45837]
    debug!("s = {:?}", s);
  • edit in sanakirja-core/src/btree/del.rs at line 32
    [3.53628]
    [3.53628]
    debug!("not found");
  • edit in sanakirja-core/src/btree/del.rs at line 75
    [3.17134][2.1290:1308]()
    cursor.pop();
  • edit in sanakirja-core/src/btree/del.rs at line 76
    [2.1341]
    [3.17136]
    cursor.pop();
  • edit in sanakirja-core/src/btree/del.rs at line 97
    [3.2591][2.1342:1363]()
    cursor.pop()
  • replacement in sanakirja-core/src/btree/del.rs at line 106
    [3.10347][3.10347:10383]()
    cursor.first_rc_level <= 1,
    [3.10347]
    [3.10383]
    cursor.first_rc_level == 0,
  • replacement in sanakirja-core/src/btree/del.rs at line 383
    [2.2361][2.2361:2401]()
    free[cursor.pointer()] = freed;
    [2.2361]
    [3.62825]
    free[cursor.pointer() + 1] = freed;
  • edit in sanakirja-core/src/btree/del.rs at line 510
    [3.38716]
    [3.38716]
    debug!("ok freed {:?}", freed);
  • edit in sanakirja-core/src/btree/del.rs at line 521
    [3.38925]
    [3.38925]
    debug!("split freed {:?}", freed);
  • edit in sanakirja-core/src/btree/cursor.rs at line 4
    [3.63754]
    [3.63766]
    use log::*;
  • replacement in sanakirja-core/src/btree/cursor.rs at line 71
    [3.65424][3.65424:65473]()
    stack[1] = MaybeUninit::new(PageCursor {
    [3.65424]
    [3.65473]
    stack[0] = MaybeUninit::new(PageCursor {
  • edit in sanakirja-core/src/btree/cursor.rs at line 75
    [2.3339][2.3339:3423](),[2.3423][3.65498:65536](),[3.65498][3.65498:65536]()
    stack[0] = MaybeUninit::new(PageCursor {
    page: CowPage::null(),
    cursor: None,
    });
  • replacement in sanakirja-core/src/btree/cursor.rs at line 78
    [3.65611][3.65611:65635]()
    pointer: 1,
    [3.65611]
    [3.65635]
    pointer: 0,
  • edit in sanakirja-core/src/btree/cursor.rs at line 102
    [2.3788]
    [2.3788]
    assert!(self.pointer > 0);
  • replacement in sanakirja-core/src/btree/cursor.rs at line 117
    [3.66162][3.66162:66202]()
    let mut last_matching_page = 0;
    [3.66162]
    [3.66202]
    let mut last_matching_page = N_CURSORS;
  • edit in sanakirja-core/src/btree/cursor.rs at line 120
    [3.2548]
    [3.2548]
    debug!("set cursor {:?}", self.pointer);
  • edit in sanakirja-core/src/btree/cursor.rs at line 130
    [3.66693]
    [3.66693]
    debug!("{:?}", cursor);
  • edit in sanakirja-core/src/btree/cursor.rs at line 138
    [3.67027]
    [3.67027]
    } else {
    debug!("not found on page {:?}", page)
  • replacement in sanakirja-core/src/btree/cursor.rs at line 144
    [3.67194][3.67194:67229](),[3.34500][3.34500:34573]()
    self.pointer += 1;
    self.stack[self.pointer] = MaybeUninit::new(PageCursor {
    [3.67194]
    [3.34573]
    self.push(PageCursor {
  • replacement in sanakirja-core/src/btree/cursor.rs at line 152
    [3.67477][3.67477:67513]()
    if last_matching_page > 0 {
    [3.67477]
    [3.67513]
    if last_matching_page < N_CURSORS {
  • replacement in sanakirja-core/src/btree/cursor.rs at line 190
    [3.68805][3.68805:68806]()
    [3.68805]
    [3.11341]
    }
    impl<K: Representable + ?Sized + core::fmt::Debug, V: Representable + ?Sized + core::fmt::Debug, P: BTreePage<K, V>> Cursor<K, V, P> {
  • edit in sanakirja-core/src/btree/cursor.rs at line 193
    [3.11441]
    [3.68933]
    debug!("=== next");
  • edit in sanakirja-core/src/btree/cursor.rs at line 195
    [3.68948]
    [3.0]
    debug!("next: {:?}", self.pointer);
  • replacement in sanakirja-core/src/btree/cursor.rs at line 203
    [3.395][3.70442:70566](),[3.70442][3.70442:70566]()
    self.pointer += 1;
    self.stack[self.pointer] = MaybeUninit::new(PageCursor {
    [3.395]
    [3.396]
    self.push(PageCursor {
  • replacement in sanakirja-core/src/btree/cursor.rs at line 209
    [3.11491][3.501:584](),[3.501][3.501:584]()
    } else if self.pointer > 1 {
    self.pointer -= 1
    [3.11491]
    [3.584]
    } else if self.pointer > 0 {
    self.pop();
  • replacement in sanakirja-core/src/btree/cursor.rs at line 221
    [3.1060][3.1060:1176]()
    self.pointer += 1;
    self.stack[self.pointer] = MaybeUninit::new(PageCursor {
    [3.1060]
    [3.1176]
    self.push(PageCursor {
  • edit in sanakirja/src/tests.rs at line 31
    [3.1330][3.1330:1374]()
    let now = std::time::SystemTime::now();
  • edit in sanakirja/src/tests.rs at line 43
    [3.1952]
    [3.1952]
    crate::debug::debug(&txn, &[&db], "debug0", true);
  • edit in sanakirja/src/tests.rs at line 76
    [3.3089][3.3089:3131]()
    println!("moi: {:?}", now.elapsed());
  • edit in sanakirja/src/tests.rs at line 162
    [3.6386]
    [3.6386]
    debug!(">>>>>>");
  • edit in sanakirja/src/tests.rs at line 168
    [3.6508]
    [3.6508]
    debug!("<<<<<<<<<");
  • replacement in sanakirja/src/environment/muttxn.rs at line 272
    [3.1707][3.587:624](),[3.88500][3.587:624]()
    debug!("decr_rc {:?}", off);
    [3.1707]
    [3.88500]
    debug!("decr_rc {:?} {:?}", off, self.rc);
  • replacement in sanakirja/src/environment/muttxn.rs at line 295
    [3.934][3.1708:1752]()
    return Ok(rc as usize - 1);
    [3.934]
    [3.1935]
    return Ok((rc & 0xfff) as usize - 1);
  • replacement in sanakirja/src/environment/muttxn.rs at line 305
    [3.1836][3.1993:2036](),[3.89253][3.1993:2036]()
    debug!("decr_rc_owned {:?}", off);
    [3.1836]
    [3.89281]
    debug!("decr_rc_owned {:?} {:?}", off, self.rc);
  • edit in sanakirja/src/environment/muttxn.rs at line 320
    [3.2098]
    [3.39211]
    debug!("del");
  • edit in sanakirja/src/environment/muttxn.rs at line 322
    [3.39267]
    [3.935]
    debug!("/del");
  • replacement in sanakirja/src/environment/muttxn.rs at line 330
    [3.1198][3.1837:1881]()
    return Ok(rc as usize - 1);
    [3.1198]
    [3.2244]
    return Ok((rc & 0xfff) as usize - 1);