Cleanup (debugging a crash related to trees/inodes)
[?]
Dec 2, 2020, 5:38 PM
5BRU2RRWOQBMS2V3RQM7PRFR5UILYZ73GISHAKJA6KIZGC5M2MFACDependencies
- [2]
OCBM7IFENew release: pijul-1.0.0-alpha.8 - [3]
R3H7D42UDebugging `pijul git`: proper error reporting - [4]
3S4DR77ZVersion updates - [5]
OUWD436AVersion bump - [6]
7UPL3Y2AUnrecord: don't restore the same unrecorded file deletion twice in the inodes and tree tables - [7]
NX5I5H53New published versions - [8]
B5Z4IMEUGenerating Cargo.nix for pijul 1.0.0-alpha.6 - [9]
I52XSRUHMassive cleanup, and simplification - [10]
WI5BS6BSNew published versions - [11]
SXEYMYF7Fixing the bad changes in history (unfortunately, by rebooting). - [12]
L4JXJHWXpijul/*: reorganize imports and remove extern crate - [13]
43AJ37IXGetting rid of edge validation, which does not work for zombie conflicts
Change contents
- edit in pijul/src/commands/debug.rs at line 3[4.2737]→[4.2737:2753](∅→∅),[4.2753]→[4.5642:5662](∅→∅),[4.5662]→[4.2753:2754](∅→∅),[4.2753]→[4.2753:2754](∅→∅)
use clap::Clap;use libpijul::TxnT; - edit in pijul/src/commands/debug.rs at line 5
use clap::Clap;use libpijul::{Base32, TxnT};use log::debug; - edit in pijul/src/commands/debug.rs at line 22
libpijul::pristine::debug_revinodes(&txn); - edit in pijul/src/commands/debug.rs at line 25
let c: libpijul::ChangeId = libpijul::ChangeId::from_base32(b"L4ITS7QS3M4P6").unwrap();debug!("{:?}", txn.get_external(c)); - replacement in pijul/Cargo.toml at line 4
version = "1.0.0-alpha.8"version = "1.0.0-alpha.11" - replacement in pijul/Cargo.toml at line 49
libpijul = { version = "1.0.0-alpha.6", features = [ "tarball" ] }libpijul = { version = "1.0.0-alpha.7", features = [ "tarball" ] } - replacement in libpijul/src/unrecord/working_copy.rs at line 17
let inode = inode.to_owned();txn.del_revinodes(pos, None)?;txn.del_inodes(inode, None)?;del_inodes_with_rev(txn, inode, pos)?; - replacement in libpijul/src/unrecord/working_copy.rs at line 98
txn.put_tree(file_id.as_file_id(), inode)?;txn.put_revtree(inode, file_id.as_file_id())?;put_tree_with_rev(txn, file_id.as_file_id(), inode)?; - replacement in libpijul/src/unrecord/working_copy.rs at line 149
let inode = inode.to_owned();txn.del_revinodes(position, None)?;txn.del_inodes(inode, None)?;del_inodes_with_rev(txn, inode, position)?; - edit in libpijul/src/record.rs at line 179
}Ok(None) => continue,Err(_) => {let parent = txn.get_revtree(item.inode, None).unwrap().to_owned();info!("recursively deleting {:?} {:?}", parent, item.inode);crate::fs::rec_delete(txn, parent, item.inode, false)?;continue; - edit in libpijul/src/record.rs at line 180
_ => continue, - edit in libpijul/src/pristine/sanakirja.rs at line 421
type Revinodes = Db<Position<ChangeId>, Inode>; - edit in libpijul/src/pristine/sanakirja.rs at line 424
// #[cfg(debug_assertions)] - edit in libpijul/src/pristine/sanakirja.rs at line 425
#[cfg(debug_assertions)]sanakirja_cursor!(revinodes, Position<ChangeId>, Inode); - edit in libpijul/src/pristine/sanakirja.rs at line 635
// #[cfg(debug_assertions)] - edit in libpijul/src/pristine/sanakirja.rs at line 641
#[cfg(debug_assertions)]fn iter_revinodes<'txn>(&'txn self,) -> super::Cursor<Self, &'txn Self, Self::RevinodesCursor, Position<ChangeId>, Inode> {self.cursor_revinodes(&self.revinodes, None)} - edit in libpijul/src/pristine/mod.rs at line 141
table!(revinodes); - edit in libpijul/src/pristine/mod.rs at line 260
// #[cfg(debug_assertions)] - edit in libpijul/src/pristine/mod.rs at line 261
#[cfg(not(debug_assertions))]fn debug_inodes(&self) {} - edit in libpijul/src/pristine/mod.rs at line 264
#[cfg(debug_assertions)]cursor!(revinodes, Position<ChangeId>, Inode);#[cfg(debug_assertions)]fn iter_revinodes<'txn>(&'txn self,) -> Cursor<Self, &'txn Self, Self::RevinodesCursor, Position<ChangeId>, Inode>; - edit in libpijul/src/pristine/mod.rs at line 562
#[cfg(debug_assertions)]pub fn debug_revinodes<T: TxnT>(txn: &T) {debug!("debug_revinodes");for t in txn.iter_revinodes() {debug!("debug_revinodes = {:?}", t)}debug!("/debug_revinodes");} - edit in libpijul/src/pristine/mod.rs at line 866
// #[cfg(debug_assertions)] - edit in libpijul/src/pristine/mod.rs at line 867
#[cfg(debug_assertions)]initialized_cursor!(revinodes, Position<ChangeId>, Inode); - edit in libpijul/src/pristine/mod.rs at line 1146
Ok(())}pub(crate) fn del_inodes_with_rev<T: MutTxnT>(txn: &mut T,inode: Inode,position: Position<ChangeId>,) -> Result<bool, anyhow::Error> {if txn.del_inodes(inode, Some(position))? {assert!(txn.del_revinodes(position, Some(inode))?);Ok(true)} else {Ok(false)}}pub(crate) fn put_tree_with_rev<T: MutTxnT>(txn: &mut T,file_id: PathId,inode: Inode,) -> Result<(), anyhow::Error> {txn.put_tree(file_id, inode)?;txn.put_revtree(inode, file_id)?; - edit in libpijul/src/pristine/mod.rs at line 1172
pub(crate) fn del_tree_with_rev<T: MutTxnT>(txn: &mut T,file_id: PathId,inode: Inode,) -> Result<bool, anyhow::Error> {if txn.del_tree(file_id, Some(inode))? {if !file_id.basename.is_empty() {assert!(txn.del_revtree(inode, Some(file_id))?);}Ok(true)} else {Ok(false)}} - replacement in libpijul/src/output/output.rs at line 238
assert!(txn.del_revtree(inode, Some(parent.as_file_id()))?);assert!(txn.del_tree(parent.as_file_id(), Some(inode))?);del_tree_with_rev(txn, parent.as_file_id(), inode)?; - replacement in libpijul/src/output/output.rs at line 258
txn.put_tree(file_id_, inode)?;txn.put_revtree(inode, file_id_)?;put_tree_with_rev(txn, file_id_, inode)?; - replacement in libpijul/src/output/output.rs at line 266
txn.put_tree(file_id_, inode)?;txn.put_revtree(inode, file_id_)?;put_tree_with_rev(txn, file_id_, inode)?; - replacement in libpijul/src/output/output.rs at line 280
txn.put_tree(file_id_, inode)?;txn.put_revtree(inode, file_id_)?;put_tree_with_rev(txn, file_id_, inode)?; - replacement in libpijul/src/output/output.rs at line 357
assert!(txn.del_tree(fileid.as_file_id(), Some(*inode))?);if !fileid.basename.is_empty() {assert!(txn.del_revtree(*inode, Some(fileid.as_file_id()))?);}del_tree_with_rev(txn, fileid.as_file_id(), *inode)?; - replacement in libpijul/src/output/output.rs at line 359
assert!(txn.del_inodes(*inode, Some(vertex))?);assert!(txn.del_revinodes(vertex, Some(*inode))?);debug!("kill_dead_files {:?} {:?}", inode, vertex);del_inodes_with_rev(txn, *inode, vertex)?; - replacement in libpijul/src/fs.rs at line 171
assert!(txn.del_tree(parent_id.as_file_id(), Some(inode))?);assert!(txn.del_revtree(inode, Some(parent_id.as_file_id()))?);del_tree_with_rev(txn, parent_id.as_file_id(), inode)?; - replacement in libpijul/src/fs.rs at line 173
assert!(txn.del_revinodes(vertex, Some(inode))?);assert!(txn.del_inodes(inode, Some(vertex))?);del_inodes_with_rev(txn, inode, vertex)?; - replacement in libpijul/src/fs.rs at line 175
txn.put_tree(parent_id.as_file_id(), child)?;txn.put_revtree(child, parent_id.as_file_id())?;put_tree_with_rev(txn, parent_id.as_file_id(), child)?; - replacement in libpijul/src/fs.rs at line 191
txn.put_tree(parent_id.as_file_id(), child_inode)?;txn.put_revtree(child_inode, parent_id.as_file_id())?;put_tree_with_rev(txn, parent_id.as_file_id(), child_inode)?; - replacement in libpijul/src/fs.rs at line 248
// org id pbMhYNkbwXVN5IhA6QR+oGisezusrYj/GXR0zMRLtTU=assert!(txn.del_tree(fileref.as_file_id(), Some(inode))?);assert!(txn.del_revtree(inode, Some(fileref.as_file_id()))?);// org id yM7YkGaAlCc1HX7iY/8kRuL9f2moGbKyzXKA/sGOdlM=del_tree_with_rev(txn, fileref.as_file_id(), inode)?; - replacement in libpijul/src/fs.rs at line 298
if !txn.del_tree(file_id.as_file_id(), Some(inode))? {debug!("rec_delete (is_dir): {:?} {:?} not present",file_id.as_file_id(),inode);}assert!(txn.del_tree(file_id.as_file_id(), Some(inode))?); - replacement in libpijul/src/fs.rs at line 300
if txn.del_tree(parent.as_file_id(), Some(inode))? {assert!(txn.del_revtree(inode, Some(parent.as_file_id()))?);if update_inodes {if let Some(vertex) = txn.get_inodes(inode, None) {assert!(txn.del_revinodes(vertex, Some(inode))?);assert!(txn.del_inodes(inode, Some(vertex))?);}if del_tree_with_rev(txn, parent.as_file_id(), inode)? {if let Some(vertex) = txn.get_inodes(inode, None) {del_inodes_with_rev(txn, inode, vertex)?; - replacement in libpijul/src/apply.rs at line 268
// org id zzKI7nUCrGP6P9+0nk29zZnRY1qcdFJH2tXwOxTn/xM= - edit in libpijul/src/apply.rs at line 277
// org id 8cpuyZX4ja1VYT3lhtYBMXJenBtvUbVEGky3wZ6W/HM= - edit in libpijul/src/apply.rs at line 292
// org id iTzVDtyzdcIEH3EDPbaq8PfGH9WgwLTd5XSxI5nK4Kc= - replacement in libpijul/src/apply.rs at line 294
txn.del_revtree(inode, Some(parent.as_file_id()))?;txn.del_tree(parent.as_file_id(), Some(inode))?;del_tree_with_rev(txn, parent.as_file_id(), inode)?; - edit in libpijul/src/apply.rs at line 296
// Delete the directory, if it's there. - replacement in libpijul/src/apply.rs at line 306
txn.del_inodes(inode, Some(vertex))?;txn.del_revinodes(vertex, Some(inode))?;del_inodes_with_rev(txn, inode, vertex)?; - replacement in libpijul/src/apply.rs at line 312
// org id QIECdrRSNOnrMRRD9QO87SUCSg4dt9OUS5V6GZPPmeM=