More debugging
[?]
Feb 2, 2021, 3:43 PM
6DMPXOAT5GQ3BQQOMUZN2GMBQPRA4IB7CCPHTQTIFGO3KWWAKF3QCDependencies
- [2]
YWFYZNLZCleanup + inter-process concurrency - [3]
QEUTVAZ4Splitting btree::page - [4]
OP6SVMODResetting history - [5]
FMN7X4J2Micro-improvements, now noticeably faster than std::collections::BTreeMap - [6]
WS4ZQM4RDebugging, tests, etc. - [7]
ONES3V46reference counting works for put - [8]
X3QVVQISMore debugging (del seems to work now) - [9]
NQBEOCFOTests cleanup - [10]
YXKP4AIWNew file locks, with multiple sets of free pages - [11]
DV4A2LR7Double-inserts (rebalancing near an internal deletion) - [12]
UAQX27N4Tests
Change contents
- replacement in sanakirja-core/src/btree/put.rs at line 15
/// Insert a binding to a database, returning `false` if and only/// if the exact same binding (key *and* value) was already in the database./// 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
debug!("put: {:?} {:?}", cursor.pointer, cursor.first_rc_level); - edit in sanakirja-core/src/btree/put.rs at line 58
let mut last_freed = 0; - edit in sanakirja-core/src/btree/put.rs at line 60
debug!("pointer: {:?}", cursor.pointer);cursor.pointer -= 1; - replacement in sanakirja-core/src/btree/put.rs at line 68
incr_descendants::<T, K, V, P>(txn, cursor, free, freed)?;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
debug!("splitting {:?}", cur.page); - edit in sanakirja-core/src/btree/put.rs at line 86
debug!("splitting the root"); - replacement in sanakirja-core/src/btree/put.rs at line 103
debug!("ok");incr_descendants::<T, K, V, P>(txn, cursor, free, freed)?;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
last_freed: u64, - replacement in sanakirja-core/src/btree/put.rs at line 135
// debug!("cursor.pointer {:?}, first_rc_level {:?}", cursor.pointer, cursor.first_rc_level);debug!("incr_descendants {:?} {:?} {:?} {:?}", cursor.current().page, freed, cursor.pointer, cursor.first_rc_level); - replacement in sanakirja-core/src/btree/put.rs at line 140
if cursor.pointer == cursor.first_rc_level + 1 {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)?;}free[cursor.pointer] = freed; - edit in sanakirja-core/src/btree/put.rs at line 144
debug!("free child: {:?}", last_freed); - replacement in sanakirja-core/src/btree/put.rs at line 149
if left != (freed & !1) {if left != 0 && left != last_freed {debug!("incr {:?}", left); - replacement in sanakirja-core/src/btree/put.rs at line 157
if r != freed {if r != 0 && r != last_freed {debug!("incr {:?}", r); - replacement in sanakirja-core/src/btree/page/put.rs at line 199
T: AllocPage+ core::fmt::Debug,T: AllocPage + core::fmt::Debug, - replacement in sanakirja-core/src/btree/page/put.rs at line 229
let s = unsafe {core::slice::from_raw_parts(page.data.as_ptr().add(HDR) as *const LeafOffset,n0 as usize,)};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
core::ptr::copy_nonoverlapping(ptr, current_page.0.data.offset(off_new as isize), size);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
freed: page.offset,freed: if hdr.is_dirty() {page.offset | 1} else {page.offset}, - replacement in sanakirja/src/tests.rs at line 124
let _db2 = fork_db(&mut txn, &db);let db2 = fork_db(&mut txn, &db).unwrap(); - replacement in sanakirja/src/tests.rs at line 127
assert_eq!(max, nn)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
- edit in sanakirja/src/tests.rs at line 178
debug!("============================="); - edit in sanakirja/src/tests.rs at line 186
crate::debug::debug(&txn, &[&db, &db2], "debug0", true);unimplemented!(); - replacement in sanakirja/src/tests.rs at line 211
let _db3 = fork_db(&mut txn, &db).unwrap();for i in 1530..1531 {let db3 = fork_db(&mut txn, &db).unwrap();/*for i in 1530..1531 { - replacement in sanakirja/src/tests.rs at line 214
}}*/ - edit in sanakirja/src/tests.rs at line 216
debug!("{:?} {:?} {:?}", db, db2, db3);crate::debug::debug(&txn, &[&db, &db2, &db3], "debug", true); - edit in sanakirja/src/tests.rs at line 222
// 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
let mut db = create_db::<MutTxn<&Env, ()>, u64, ()>(&mut txn).unwrap();let db = create_db::<MutTxn<&Env, ()>, u64, ()>(&mut txn).unwrap(); - replacement in sanakirja/src/tests.rs at line 289
let mut txn = Env::mut_txn_begin(&env).unwrap();let txn = Env::mut_txn_begin(&env).unwrap(); - replacement in sanakirja/src/tests.rs at line 295
let mut txn = Env::mut_txn_begin(&env).unwrap();let txn = Env::mut_txn_begin(&env).unwrap(); - replacement in sanakirja/src/environment/mod.rs at line 165
length,length: (n_roots * PAGE_SIZE) as u64,