pijul nest
guest [sign in]

More debugging

[?]
Feb 2, 2021, 3:43 PM
6DMPXOAT5GQ3BQQOMUZN2GMBQPRA4IB7CCPHTQTIFGO3KWWAKF3QC

Dependencies

  • [2] YWFYZNLZ Cleanup + inter-process concurrency
  • [3] QEUTVAZ4 Splitting btree::page
  • [4] OP6SVMOD Resetting history
  • [5] FMN7X4J2 Micro-improvements, now noticeably faster than std::collections::BTreeMap
  • [6] WS4ZQM4R Debugging, tests, etc.
  • [7] ONES3V46 reference counting works for put
  • [8] X3QVVQIS More debugging (del seems to work now)
  • [9] NQBEOCFO Tests cleanup
  • [10] YXKP4AIW New file locks, with multiple sets of free pages
  • [11] DV4A2LR7 Double-inserts (rebalancing near an internal deletion)
  • [12] UAQX27N4 Tests

Change contents

  • replacement in sanakirja-core/src/btree/put.rs at line 15
    [4.3976][4.3976:4119]()
    /// Insert a binding to a database, returning `false` if and only
    /// if the exact same binding (key *and* value) was already in the database.
    [4.3976]
    [4.4119]
    /// Insert an entry into a database, returning `false` if and only if
    /// the exact same entry (key *and* value) was already in the
    /// database.
  • edit in sanakirja-core/src/btree/put.rs at line 28
    [4.4449][4.0:69](),[4.69][4.673:674](),[4.673][4.673:674]()
    debug!("put: {:?} {:?}", cursor.pointer, cursor.first_rc_level);
  • edit in sanakirja-core/src/btree/put.rs at line 58
    [4.5205]
    [4.5205]
    let mut last_freed = 0;
  • edit in sanakirja-core/src/btree/put.rs at line 60
    [4.5216][4.675:724](),[4.724][4.0:29](),[4.5216][4.0:29]()
    debug!("pointer: {:?}", cursor.pointer);
    cursor.pointer -= 1;
  • replacement in sanakirja-core/src/btree/put.rs at line 68
    [4.5441][4.5441:5516]()
    incr_descendants::<T, K, V, P>(txn, cursor, free, freed)?;
    [4.5404]
    [4.30]
    incr_descendants::<T, K, V, P>(txn, cursor, free, freed, last_freed)?;
    last_freed = freed & !1;
    cursor.pointer -= 1;
  • edit in sanakirja-core/src/btree/put.rs at line 73
    [4.118][4.725:781]()
    debug!("splitting {:?}", cur.page);
  • edit in sanakirja-core/src/btree/put.rs at line 86
    [4.5684][4.782:832]()
    debug!("splitting the root");
  • replacement in sanakirja-core/src/btree/put.rs at line 103
    [4.7298][4.979:1009](),[4.1009][4.7298:7373](),[4.7298][4.7298:7373]()
    debug!("ok");
    incr_descendants::<T, K, V, P>(txn, cursor, free, freed)?;
    [4.7298]
    [4.533]
    incr_descendants::<T, K, V, P>(txn, cursor, free, freed, last_freed)?;
    last_freed = freed & !1;
    cursor.pointer -= 1;
  • edit in sanakirja-core/src/btree/put.rs at line 133
    [4.7672]
    [4.7672]
    last_freed: u64,
  • replacement in sanakirja-core/src/btree/put.rs at line 135
    [4.7700][4.1009:1107]()
    // debug!("cursor.pointer {:?}, first_rc_level {:?}", cursor.pointer, cursor.first_rc_level);
    [4.7700]
    [4.7700]
    debug!("incr_descendants {:?} {:?} {:?} {:?}", cursor.current().page, freed, cursor.pointer, cursor.first_rc_level);
  • replacement in sanakirja-core/src/btree/put.rs at line 140
    [4.7865][4.119:176]()
    if cursor.pointer == cursor.first_rc_level + 1 {
    [4.7865]
    [4.7918]
    if cursor.pointer == cursor.first_rc_level {
  • replacement in sanakirja-core/src/btree/put.rs at line 142
    [4.7958][4.7958:8058](),[4.8058][4.177:214](),[4.214][4.8099:8113](),[4.8099][4.8099:8113]()
    if freed & 1 != 0 {
    txn.decr_rc_owned(freed ^ 1)?;
    } else {
    txn.decr_rc(freed)?;
    }
    [4.7958]
    [4.8113]
    free[cursor.pointer] = freed;
  • edit in sanakirja-core/src/btree/put.rs at line 144
    [4.8123]
    [4.8123]
    debug!("free child: {:?}", last_freed);
  • replacement in sanakirja-core/src/btree/put.rs at line 149
    [4.1125][4.8256:8290](),[4.8256][4.8256:8290]()
    if left != (freed & !1) {
    [4.1125]
    [4.8290]
    if left != 0 && left != last_freed {
    debug!("incr {:?}", left);
  • replacement in sanakirja-core/src/btree/put.rs at line 157
    [4.8508][4.8508:8536]()
    if r != freed {
    [4.8508]
    [4.8536]
    if r != 0 && r != last_freed {
    debug!("incr {:?}", r);
  • replacement in sanakirja-core/src/btree/page/put.rs at line 199
    [3.12878][3.12878:12914]()
    T: AllocPage+ core::fmt::Debug,
    [3.12878]
    [3.12914]
    T: AllocPage + core::fmt::Debug,
  • replacement in sanakirja-core/src/btree/page/put.rs at line 229
    [3.13657][3.13657:13793]()
    let s = unsafe {core::slice::from_raw_parts(
    page.data.as_ptr().add(HDR) as *const LeafOffset,
    n0 as usize,
    )};
    [3.13657]
    [3.13793]
    let s = unsafe {
    core::slice::from_raw_parts(
    page.data.as_ptr().add(HDR) as *const LeafOffset,
    n0 as usize,
    )
    };
  • replacement in sanakirja-core/src/btree/page/put.rs at line 250
    [3.14456][3.14456:14561]()
    core::ptr::copy_nonoverlapping(ptr, current_page.0.data.offset(off_new as isize), size);
    [3.14456]
    [3.14561]
    core::ptr::copy_nonoverlapping(
    ptr,
    current_page.0.data.offset(off_new as isize),
    size,
    );
  • replacement in sanakirja-core/src/btree/page/put.rs at line 280
    [3.15453][3.15453:15481]()
    freed: page.offset,
    [3.15453]
    [3.15481]
    freed: if hdr.is_dirty() {
    page.offset | 1
    } else {
    page.offset
    },
  • replacement in sanakirja/src/tests.rs at line 124
    [4.5466][4.5466:5505]()
    let _db2 = fork_db(&mut txn, &db);
    [4.5465]
    [4.5540]
    let db2 = fork_db(&mut txn, &db).unwrap();
  • replacement in sanakirja/src/tests.rs at line 127
    [4.5650][4.5650:5674]()
    assert_eq!(max, nn)
    [4.5650]
    [4.5674]
    assert_eq!(max, nn);
    let mut refs = BTreeMap::new();
    add_refs(&txn, &db, &mut refs).unwrap();
    add_refs(&txn, &db2, &mut refs).unwrap();
    for (p, r) in refs.iter() {
    if *r >= 2 {
    assert_eq!(txn.rc(*p).unwrap(), *r as u64);
    } else {
    assert_eq!(txn.rc(*p).unwrap(), 0);
    }
    }
  • edit in sanakirja/src/tests.rs at line 174
    [4.6196]
    [4.6231]
  • edit in sanakirja/src/tests.rs at line 178
    [4.6386]
    [4.6386]
    debug!("=============================");
  • edit in sanakirja/src/tests.rs at line 186
    [4.6528]
    [4.6625]
    crate::debug::debug(&txn, &[&db, &db2], "debug0", true);
    unimplemented!();
  • replacement in sanakirja/src/tests.rs at line 211
    [4.10333][4.10333:10407]()
    let _db3 = fork_db(&mut txn, &db).unwrap();
    for i in 1530..1531 {
    [4.10295]
    [4.10501]
    let db3 = fork_db(&mut txn, &db).unwrap();
    /*for i in 1530..1531 {
  • replacement in sanakirja/src/tests.rs at line 214
    [4.10605][4.10605:10611]()
    }
    [4.10552]
    [4.10651]
    }*/
  • edit in sanakirja/src/tests.rs at line 216
    [4.10652]
    [4.7217]
    debug!("{:?} {:?} {:?}", db, db2, db3);
    crate::debug::debug(&txn, &[&db, &db2, &db3], "debug", true);
  • edit in sanakirja/src/tests.rs at line 222
    [4.7378]
    [4.7378]
    // add_refs(&txn, &db3, &mut refs).unwrap();
    for (p, r) in refs.iter() {
    println!("{:?} {:?}", p, r);
    if *r >= 2 {
    assert_eq!(txn.rc(*p).unwrap(), *r as u64);
    } else {
    assert_eq!(txn.rc(*p).unwrap(), 0);
    }
    }
  • replacement in sanakirja/src/tests.rs at line 284
    [2.2076][2.2076:2152]()
    let mut db = create_db::<MutTxn<&Env, ()>, u64, ()>(&mut txn).unwrap();
    [2.2076]
    [2.2152]
    let db = create_db::<MutTxn<&Env, ()>, u64, ()>(&mut txn).unwrap();
  • replacement in sanakirja/src/tests.rs at line 289
    [2.2283][2.2283:2336]()
    let mut txn = Env::mut_txn_begin(&env).unwrap();
    [2.2283]
    [2.2336]
    let txn = Env::mut_txn_begin(&env).unwrap();
  • replacement in sanakirja/src/tests.rs at line 295
    [2.2536][2.2536:2589]()
    let mut txn = Env::mut_txn_begin(&env).unwrap();
    [2.2536]
    [2.2589]
    let txn = Env::mut_txn_begin(&env).unwrap();
  • replacement in sanakirja/src/environment/mod.rs at line 165
    [4.96702][4.2430:2458]()
    length,
    [4.96702]
    [4.96751]
    length: (n_roots * PAGE_SIZE) as u64,