Fixing a bus error when starting a transaction on a full disk

[?]
Mar 4, 2021, 9:12 AM
ZBNKSYA6PW4DSPC3NCRUZLVHW2GNXMCSDSAGEIKHGHDGGZRBH7ZQC

Dependencies

  • [2] PGERZ3KJ Channel renaming (also do not create a new channel when recording on a channel that doesn't exist)
  • [3] RXNT67OT Sanakirja version, and removing an unwrap
  • [4] RGJWLQWB When cloning, try to init *before* setting up the path Drop (pijul::commands::clone::RepoPath)
  • [5] A7NTQINQ pijul channel delete: error if channel doesn't exist
  • [6] ZHABNS3S Canonicalize all paths
  • [7] SQVWP4LU When clone fails, only remove directories we have created (not other directories)
  • [8] I7VL7VPZ Minor cleanup
  • [9] JL4WKA5P Implement the Sanakirja concurrency model in a cross-process way
  • [10] IIV3EL2X Cleanup, formatting, and fixing the Git feature
  • [11] Q7CAYX5N Fixing Windows compilation
  • [12] UFCZKKLX Upgrading to the latest Sanakirja/Rand
  • [13] HDGRZISM Version updates
  • [14] CCLLB7OI Upgrading to Sanakirja 0.15 + version bump
  • [15] VQPAUKBQ channel switch as an alias to reset
  • [16] JRENVH5D Reqwest 0.11
  • [17] A3DMBJJA Upgrading the `git` subcommand to the latest Sanakirja and Libpijul
  • [18] 6DOXSHWG Cleanup, and version bump
  • [19] WZVCLZKY address clippy lints
  • [20] LYTVEPH3 Avoid cloning into an existing path
  • [21] PJ7T2VFL Do not hang on locked repositories
  • [22] 4OCC6D42 Recursive add
  • [23] Y7YAFMFF Fix path prefix striping on Windows.
  • [24] Y6EVFMTA Don't output files if they aren't in the current channel
  • [25] 76PCXGML Pushing to, and pulling from the local repository
  • [26] YAJAXIV5 Unrecording changes atomically
  • [27] QWD7UE76 push/pull: rename `channel` option
  • [28] 7ZFRYVVQ Cargo.nix and formatting
  • [29] VL7ZYKHB Running hooks through shell on Windows and Unix
  • [30] GHO6DWPI Refactoring iterators
  • [31] VO5OQW4W Removing anyhow in libpijul
  • [32] 3AMEP2Y5 More convenient interface for channels
  • [33] YN63NUZO Sanakirja 1.0
  • [34] I52XSRUH Massive cleanup, and simplification
  • [35] KUMJITTF Version bump in the lockfiles
  • [36] HKEOO4QJ Version bump
  • [37] OJZWJUF2 MUCH faster `pijul add -r`
  • [38] G734WNM6 flake.nix: use crate2nix
  • [39] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).
  • [40] B3QWIGDE Fixing the Git features with the latest Pijul (+ conflicts in Cargo.toml)
  • [41] MU5GSJAW Partial push and pull (WARNING: breaks the existing protocol)
  • [42] 33SQMZYX New versions of dependencies
  • [43] TPEH2XNB 1.0.0-alpha.28, with Tokio 1.0

Change contents

  • replacement in pijul/src/remote/mod.rs at line 276
    [4.61269][4.61269:61331]()
    let mut txn = l.pristine.mut_txn_begin();
    [4.61269]
    [4.8957]
    let mut txn = l.pristine.mut_txn_begin()?;
  • replacement in pijul/src/remote/local.rs at line 104
    [4.82358][4.82358:82411]()
    let mut txn = self.pristine.mut_txn_begin();
    [4.82358]
    [4.82411]
    let mut txn = self.pristine.mut_txn_begin()?;
  • replacement in pijul/src/commands/unrecord.rs at line 39
    [4.166][4.96356:96409](),[4.362][4.96356:96409](),[4.96356][4.96356:96409]()
    let mut txn = repo.pristine.mut_txn_begin();
    [4.362]
    [4.11721]
    let mut txn = repo.pristine.mut_txn_begin()?;
  • replacement in pijul/src/commands/reset.rs at line 41
    [4.6163][4.98281:98334](),[4.98281][4.98281:98334]()
    let mut txn = repo.pristine.mut_txn_begin();
    [4.6163]
    [4.414]
    let mut txn = repo.pristine.mut_txn_begin()?;
  • replacement in pijul/src/commands/record.rs at line 64
    [4.103545][4.103545:103598]()
    let mut txn = repo.pristine.mut_txn_begin();
    [4.103545]
    [2.0]
    let mut txn = repo.pristine.mut_txn_begin()?;
  • replacement in pijul/src/commands/pushpull.rs at line 47
    [4.112712][4.112712:112773]()
    let mut txn = repo.pristine.mut_txn_begin();
    [4.112712]
    [4.112773]
    let mut txn = repo.pristine.mut_txn_begin()?;
  • replacement in pijul/src/commands/pushpull.rs at line 157
    [4.115558][4.115558:115611]()
    let mut txn = repo.pristine.mut_txn_begin();
    [4.115558]
    [4.6954]
    let mut txn = repo.pristine.mut_txn_begin()?;
  • replacement in pijul/src/commands/pushpull.rs at line 279
    [4.6765][4.117648:117701](),[4.117648][4.117648:117701]()
    let mut txn = repo.pristine.mut_txn_begin();
    [4.6765]
    [4.724]
    let mut txn = repo.pristine.mut_txn_begin()?;
  • replacement in pijul/src/commands/protocol.rs at line 51
    [4.6929][4.124877:124930](),[4.124877][4.124877:124930]()
    let mut txn = repo.pristine.mut_txn_begin();
    [4.6929]
    [4.124930]
    let mut txn = repo.pristine.mut_txn_begin()?;
  • replacement in pijul/src/commands/init.rs at line 20
    [4.14198][4.136875:136928](),[4.136875][4.136875:136928]()
    let mut txn = repo.pristine.mut_txn_begin();
    [4.14198]
    [4.1647]
    let mut txn = repo.pristine.mut_txn_begin()?;
  • replacement in pijul/src/commands/fork.rs at line 28
    [4.168457][4.168457:168510]()
    let mut txn = repo.pristine.mut_txn_begin();
    [4.168457]
    [4.168510]
    let mut txn = repo.pristine.mut_txn_begin()?;
  • replacement in pijul/src/commands/file_operations.rs at line 41
    [4.169855][4.169855:169908]()
    let mut txn = repo.pristine.mut_txn_begin();
    [4.169855]
    [4.347]
    let mut txn = repo.pristine.mut_txn_begin()?;
  • replacement in pijul/src/commands/file_operations.rs at line 107
    [4.13499][4.171454:171507](),[4.15190][4.171454:171507](),[4.171454][4.171454:171507]()
    let mut txn = repo.pristine.mut_txn_begin();
    [4.13499]
    [4.192]
    let mut txn = repo.pristine.mut_txn_begin()?;
  • replacement in pijul/src/commands/file_operations.rs at line 168
    [4.13573][4.172733:172786](),[4.15362][4.172733:172786](),[4.172733][4.172733:172786]()
    let mut txn = repo.pristine.mut_txn_begin();
    [4.13573]
    [4.536]
    let mut txn = repo.pristine.mut_txn_begin()?;
  • replacement in pijul/src/commands/diff.rs at line 37
    [4.15538][4.174178:174231](),[4.174178][4.174178:174231]()
    let mut txn = repo.pristine.mut_txn_begin();
    [4.15538]
    [4.174231]
    let mut txn = repo.pristine.mut_txn_begin()?;
  • replacement in pijul/src/commands/clone.rs at line 65
    [4.275][4.184784:184837](),[4.276][4.184784:184837](),[4.15873][4.184784:184837](),[4.184784][4.184784:184837]()
    let mut txn = repo.pristine.mut_txn_begin();
    [4.15873]
    [4.184837]
    let mut txn = repo.pristine.mut_txn_begin()?;
  • replacement in pijul/src/commands/channel.rs at line 59
    [4.1409][4.188244:188305](),[4.188244][4.188244:188305]()
    let mut txn = repo.pristine.mut_txn_begin();
    [4.1409]
    [4.21]
    let mut txn = repo.pristine.mut_txn_begin()?;
  • replacement in pijul/src/commands/channel.rs at line 78
    [4.1870][4.188456:188517](),[4.188456][4.188456:188517]()
    let mut txn = repo.pristine.mut_txn_begin();
    [4.1870]
    [4.188517]
    let mut txn = repo.pristine.mut_txn_begin()?;
  • replacement in pijul/src/commands/archive.rs at line 98
    [4.193436][4.193436:193497]()
    let mut txn = repo.pristine.mut_txn_begin();
    [4.193436]
    [4.19221]
    let mut txn = repo.pristine.mut_txn_begin()?;
  • replacement in pijul/src/commands/apply.rs at line 31
    [4.16700][4.194876:194929](),[4.194876][4.194876:194929]()
    let mut txn = repo.pristine.mut_txn_begin();
    [4.16700]
    [4.2803]
    let mut txn = repo.pristine.mut_txn_begin()?;
  • replacement in pijul/Cargo.toml at line 70
    [4.197874][3.51:107]()
    sanakirja = { version = "1.1.5", features = ["crc32"] }
    [4.197874]
    [4.197895]
    sanakirja = { version = "1.1.6", features = [ "crc32" ] }
  • replacement in libpijul/src/pristine/sanakirja.rs at line 144
    [4.534125][4.534125:534173]()
    pub fn mut_txn_begin(&self) -> MutTxn<()> {
    [4.534125]
    [4.534173]
    pub fn mut_txn_begin(&self) -> Result<MutTxn<()>, Error> {
  • replacement in libpijul/src/pristine/sanakirja.rs at line 146
    [4.534255][4.534255:534298](),[4.534298][4.58302:58426](),[4.58426][4.534407:534433](),[4.534407][4.534407:534433](),[4.534433][4.58427:58551](),[4.58551][4.534542:534568](),[4.534542][4.534542:534568](),[4.534568][4.58552:58676](),[4.58676][4.534677:534701](),[4.534677][4.534677:534701](),[4.534701][4.58677:58799](),[4.58799][4.534808:534835](),[4.534808][4.534808:534835](),[4.534835][4.58800:58925](),[4.58925][4.534945:534967](),[4.534945][4.534945:534967](),[4.534967][4.58926:59046](),[4.59046][4.535072:535097](),[4.535072][4.535072:535097](),[4.535097][4.59047:59170](),[4.59170][4.535205:535229](),[4.535205][4.535205:535229](),[4.535229][4.59171:59293](),[4.59293][4.535336:535357](),[4.535336][4.535336:535357](),[4.535357][4.59294:59413](),[4.59413][4.535461:535492](),[4.535461][4.535461:535492](),[4.535492][4.59414:59542](),[4.59542][4.535605:535640](),[4.535605][4.535605:535640](),[4.535640][4.59543:59674](),[4.59674][4.535756:535782](),[4.535756][4.535756:535782](),[4.535782][4.59675:59799](),[4.59799][4.535891:535916](),[4.535891][4.535891:535916](),[4.535916][4.59800:59923]()
    MutTxn {
    channels: txn
    .root_db(Root::Channels as usize)
    .unwrap_or_else(|| btree::create_db_(&mut txn).unwrap()),
    external: txn
    .root_db(Root::External as usize)
    .unwrap_or_else(|| btree::create_db_(&mut txn).unwrap()),
    internal: txn
    .root_db(Root::Internal as usize)
    .unwrap_or_else(|| btree::create_db_(&mut txn).unwrap()),
    inodes: txn
    .root_db(Root::Inodes as usize)
    .unwrap_or_else(|| btree::create_db_(&mut txn).unwrap()),
    revinodes: txn
    .root_db(Root::RevInodes as usize)
    .unwrap_or_else(|| btree::create_db_(&mut txn).unwrap()),
    tree: txn
    .root_db(Root::Tree as usize)
    .unwrap_or_else(|| btree::create_db_(&mut txn).unwrap()),
    revtree: txn
    .root_db(Root::RevTree as usize)
    .unwrap_or_else(|| btree::create_db_(&mut txn).unwrap()),
    revdep: txn
    .root_db(Root::RevDep as usize)
    .unwrap_or_else(|| btree::create_db_(&mut txn).unwrap()),
    dep: txn
    .root_db(Root::Dep as usize)
    .unwrap_or_else(|| btree::create_db_(&mut txn).unwrap()),
    touched_files: txn
    .root_db(Root::TouchedFiles as usize)
    .unwrap_or_else(|| btree::create_db_(&mut txn).unwrap()),
    rev_touched_files: txn
    .root_db(Root::RevTouchedFiles as usize)
    .unwrap_or_else(|| btree::create_db_(&mut txn).unwrap()),
    partials: txn
    .root_db(Root::Partials as usize)
    .unwrap_or_else(|| btree::create_db_(&mut txn).unwrap()),
    remotes: txn
    .root_db(Root::Remotes as usize)
    .unwrap_or_else(|| btree::create_db_(&mut txn).unwrap()),
    [4.534255]
    [4.536055]
    Ok(MutTxn {
    channels: if let Some(db) = txn.root_db(Root::Channels as usize) {
    db
    } else {
    btree::create_db_(&mut txn)?
    },
    external: if let Some(db) = txn.root_db(Root::External as usize) {
    db
    } else {
    btree::create_db_(&mut txn)?
    },
    internal: if let Some(db) = txn.root_db(Root::Internal as usize) {
    db
    } else {
    btree::create_db_(&mut txn)?
    },
    inodes: if let Some(db) = txn.root_db(Root::Inodes as usize) {
    db
    } else {
    btree::create_db_(&mut txn)?
    },
    revinodes: if let Some(db) = txn.root_db(Root::RevInodes as usize) {
    db
    } else {
    btree::create_db_(&mut txn)?
    },
    tree: if let Some(db) = txn.root_db(Root::Tree as usize) {
    db
    } else {
    btree::create_db_(&mut txn)?
    },
    revtree: if let Some(db) = txn.root_db(Root::RevTree as usize) {
    db
    } else {
    btree::create_db_(&mut txn)?
    },
    revdep: if let Some(db) = txn.root_db(Root::RevDep as usize) {
    db
    } else {
    btree::create_db_(&mut txn)?
    },
    dep: if let Some(db) = txn.root_db(Root::Dep as usize) {
    db
    } else {
    btree::create_db_(&mut txn)?
    },
    touched_files: if let Some(db) = txn.root_db(Root::TouchedFiles as usize) {
    db
    } else {
    btree::create_db_(&mut txn)?
    },
    rev_touched_files: if let Some(db) = txn.root_db(Root::RevTouchedFiles as usize) {
    db
    } else {
    btree::create_db_(&mut txn)?
    },
    partials: if let Some(db) = txn.root_db(Root::Partials as usize) {
    db
    } else {
    btree::create_db_(&mut txn)?
    },
    remotes: if let Some(db) = txn.root_db(Root::Remotes as usize) {
    db
    } else {
    btree::create_db_(&mut txn)?
    },
  • replacement in libpijul/src/pristine/sanakirja.rs at line 215
    [4.536185][4.536185:536195]()
    }
    [4.536185]
    [4.536195]
    })
  • replacement in libpijul/Cargo.toml at line 98
    [4.1022980][3.108:166]()
    sanakirja = { version = "1.1.5", features = [ "crc32" ] }
    [4.1022980]
    [4.1023001]
    sanakirja = { version = "1.1.6", features = [ "crc32" ] }
  • replacement in Cargo.nix at line 4561
    [4.144463][3.241:268]()
    version = "1.1.5";
    [4.144463]
    [4.144491]
    version = "1.1.6";
  • replacement in Cargo.nix at line 4563
    [4.144517][3.269:342]()
    sha256 = "1s89r4nksq85vhras7d3imr02rg6jfgfb793jrfg288192jp06n5";
    [4.144517]
    [4.144590]
    sha256 = "0vpannz78bnayw7874jdymsz3rz6l1liy6vxcaxdd7bykkhwh1s5";
  • replacement in Cargo.lock at line 1587
    [4.1072132][3.445:463]()
    version = "1.1.5"
    [4.1072132]
    [4.1072151]
    version = "1.1.6"
  • replacement in Cargo.lock at line 1589
    [4.1072216][3.464:542]()
    checksum = "c51a70a5480121f15c96239de59e93e66501728da31dad32dc05613d2dc909e9"
    [4.1072216]
    [4.1072294]
    checksum = "4507c8e19c7e9dd6ba627d1b1f69a0e6e7f175f54d92830ef7ca2e74beb5ea6e"