diff --git a/Cargo.lock b/Cargo.lock index 70eadd9..d88dfcb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -812,6 +812,20 @@ dependencies = [ "cfg-if 1.0.0", ] +[[package]] +name = "crossbeam" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", +] + [[package]] name = "crossbeam-channel" version = "0.5.8" @@ -846,6 +860,16 @@ dependencies = [ "scopeguard", ] +[[package]] +name = "crossbeam-queue" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" version = "0.8.16" @@ -1555,6 +1579,16 @@ dependencies = [ "simple_asn1", ] +[[package]] +name = "jwalk" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2735847566356cd2179a2a38264839308f7079fa96e6bd5a42d740460e003c56" +dependencies = [ + "crossbeam", + "rayon", +] + [[package]] name = "kamadak-exif" version = "0.5.5" @@ -3203,6 +3237,7 @@ dependencies = [ "diesel", "diesel_migrations", "filebuffer", + "jwalk", "lazy_static", "lexpr", "libsqlite3-sys", @@ -3225,7 +3260,6 @@ dependencies = [ "upend-base", "url", "uuid", - "walkdir", ] [[package]] diff --git a/db/Cargo.toml b/db/Cargo.toml index 0852d0c..4714eb9 100644 --- a/db/Cargo.toml +++ b/db/Cargo.toml @@ -52,7 +52,7 @@ url = { version = "2", features = ["serde"] } filebuffer = "0.4.0" tempfile = "^3.2.0" -walkdir = "2" +jwalk = "0.8.1" tree_magic_mini = { version = "3.0.2", features = ["with-gpl-data"] } diff --git a/db/src/stores/fs/mod.rs b/db/src/stores/fs/mod.rs index b7f9c18..0cb50b7 100644 --- a/db/src/stores/fs/mod.rs +++ b/db/src/stores/fs/mod.rs @@ -12,6 +12,7 @@ use chrono::prelude::*; use diesel::r2d2::{self, ConnectionManager, ManageConnection}; use diesel::ExpressionMethods; use diesel::{Connection, QueryDsl, RunQueryDsl, SqliteConnection}; +use jwalk::WalkDir; use lru::LruCache; use rayon::prelude::*; use serde_json::json; @@ -29,7 +30,6 @@ use upend_base::addressing::Address; use upend_base::constants::{ATTR_ADDED, ATTR_BY, ATTR_IN, ATTR_LABEL, ATTR_OF, TYPE_HASH_ADDRESS}; use upend_base::entry::Entry; use upend_base::hash::{b58_encode, UpMultihash}; -use walkdir::WalkDir; mod db; @@ -127,7 +127,7 @@ impl FsStore { .follow_links(true) .into_iter() .filter_map(|e| e.ok()) - .filter_map(|e| fs::canonicalize(e.into_path()).ok()) + .filter_map(|e| fs::canonicalize(e.path()).ok()) .filter(|e| e.is_file()) .filter(|e| !e.starts_with(absolute_dir_path.join(UPEND_SUBDIR))) .collect();