Compare commits

...

4 Commits

Author SHA1 Message Date
andy.boot 7bbecd9f87 hack 2022-08-29 11:27:45 +01:00
andy.boot 137bde1099 Fix: Try to stop panics on android.
Catch panics on thread initialization.
2022-08-26 17:12:39 +01:00
andy.boot 0d0206a5a5 Version: New version 2022-08-25 10:18:18 +01:00
andy.boot dfce0eec66 Fix: Warn if configuring threads fails
User reported this unwrap could fail, so log an error instead of using a
naked unwrap.
2022-08-25 08:59:15 +01:00
3 changed files with 62 additions and 7 deletions
Generated
+40 -1
View File
@@ -68,6 +68,12 @@ dependencies = [
"regex-automata", "regex-automata",
] ]
[[package]]
name = "cc"
version = "1.0.73"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
[[package]] [[package]]
name = "cfg-if" name = "cfg-if"
version = "1.0.0" version = "1.0.0"
@@ -118,6 +124,12 @@ dependencies = [
"toml", "toml",
] ]
[[package]]
name = "core-foundation-sys"
version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc"
[[package]] [[package]]
name = "crossbeam-channel" name = "crossbeam-channel"
version = "0.5.6" version = "0.5.6"
@@ -197,7 +209,7 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
[[package]] [[package]]
name = "du-dust" name = "du-dust"
version = "0.8.2" version = "0.8.3"
dependencies = [ dependencies = [
"ansi_term", "ansi_term",
"assert_cmd", "assert_cmd",
@@ -210,6 +222,7 @@ dependencies = [
"regex", "regex",
"serde", "serde",
"stfu8", "stfu8",
"sysinfo",
"tempfile", "tempfile",
"terminal_size", "terminal_size",
"thousands", "thousands",
@@ -322,6 +335,15 @@ dependencies = [
"autocfg", "autocfg",
] ]
[[package]]
name = "ntapi"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f"
dependencies = [
"winapi",
]
[[package]] [[package]]
name = "num_cpus" name = "num_cpus"
version = "1.13.1" version = "1.13.1"
@@ -518,6 +540,23 @@ dependencies = [
"unicode-ident", "unicode-ident",
] ]
[[package]]
name = "sysinfo"
version = "0.15.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "de94457a09609f33fec5e7fceaf907488967c6c7c75d64da6a7ce6ffdb8b5abd"
dependencies = [
"cc",
"cfg-if",
"core-foundation-sys",
"doc-comment",
"libc",
"ntapi",
"once_cell",
"rayon",
"winapi",
]
[[package]] [[package]]
name = "tempfile" name = "tempfile"
version = "3.3.0" version = "3.3.0"
+2 -1
View File
@@ -1,7 +1,7 @@
[package] [package]
name = "du-dust" name = "du-dust"
description = "A more intuitive version of du" description = "A more intuitive version of du"
version = "0.8.2" version = "0.8.3"
authors = ["bootandy <bootandy@gmail.com>", "nebkor <code@ardent.nebcorp.com>"] authors = ["bootandy <bootandy@gmail.com>", "nebkor <code@ardent.nebcorp.com>"]
edition = "2021" edition = "2021"
readme = "README.md" readme = "README.md"
@@ -39,6 +39,7 @@ regex = "1"
config-file = "0.2" config-file = "0.2"
serde = { version = "1.0", features = ["derive"] } serde = { version = "1.0", features = ["derive"] }
directories = "4" directories = "4"
sysinfo = "0.15"
[target.'cfg(windows)'.dependencies] [target.'cfg(windows)'.dependencies]
winapi-util = "0.1" winapi-util = "0.1"
+20 -5
View File
@@ -11,7 +11,9 @@ mod utils;
use crate::cli::build_cli; use crate::cli::build_cli;
use std::collections::HashSet; use std::collections::HashSet;
use std::panic;
use std::process; use std::process;
use sysinfo::{System, SystemExt};
use self::display::draw_it; use self::display::draw_it;
use clap::Values; use clap::Values;
@@ -19,6 +21,7 @@ use config::get_config;
use dir_walker::{walk_it, WalkData}; use dir_walker::{walk_it, WalkData};
use filter::get_biggest; use filter::get_biggest;
use filter_type::get_all_file_types; use filter_type::get_all_file_types;
use rayon::ThreadPoolBuildError;
use regex::Regex; use regex::Regex;
use std::cmp::max; use std::cmp::max;
use std::path::PathBuf; use std::path::PathBuf;
@@ -154,11 +157,10 @@ fn main() {
by_filecount, by_filecount,
ignore_hidden: config.get_ignore_hidden(&options), ignore_hidden: config.get_ignore_hidden(&options),
}; };
// Larger stack size to handle cases with lots of nested directories let pool = panic::catch_unwind(init_rayon);
rayon::ThreadPoolBuilder::new() if pool.is_err() {
.stack_size(usize::pow(1024, 3)) eprintln!("Warning: Could not configure threads {:?}", pool.err());
.build_global() }
.unwrap();
let iso = config.get_iso(&options); let iso = config.get_iso(&options);
let (top_level_nodes, has_errors) = walk_it(simplified_dirs, walk_data); let (top_level_nodes, has_errors) = walk_it(simplified_dirs, walk_data);
@@ -191,3 +193,16 @@ fn main() {
) )
} }
} }
fn init_rayon() -> Result<(), ThreadPoolBuildError> {
let s = System::new_all();
let av = s.get_available_memory();
let free = s.get_free_memory();
println!("{}", av);
println!("{}", free);
// Larger stack size to handle cases with lots of nested directories
rayon::ThreadPoolBuilder::new()
.stack_size(usize::pow(1024, 3))
.build_global()
}