From e38439f8012eabcd827c5abb7b7448a525feaf98 Mon Sep 17 00:00:00 2001 From: jakka Date: Wed, 2 Jul 2025 18:35:52 +0300 Subject: added more connections for more threads --- src/db.rs | 13 ++++++++----- src/files.rs | 4 ++-- src/main.rs | 6 ++++-- 3 files changed, 14 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/db.rs b/src/db.rs index 616ef2d..6e1667b 100644 --- a/src/db.rs +++ b/src/db.rs @@ -22,17 +22,20 @@ const DEDUPE_DB: &str = "DELETE FROM flacs WHERE rowid NOT IN (SELECT MAX(rowid) FROM flacs GROUP BY path)"; const GET_MODTIME: &str = "SELECT modtime FROM flacs WHERE path = ?1"; -pub fn open_db(path: Option>) -> Result> { +pub fn open_db( + path: Option>, + threads: usize, +) -> Result> { if let Some(file) = path { let manager = SqliteConnectionManager::file(file); - let pool = Pool::builder().build(manager)?; + let pool = Pool::builder().max_size(threads as u32).build(manager)?; let conn = pool.get()?; conn.execute(TABLE_CREATE, ())?; Ok(pool) } else if let Some(base_dir) = BaseDirs::new() { let file = Path::new(base_dir.data_dir()).join("reencoder.db"); let manager = SqliteConnectionManager::file(file); - let pool = Pool::builder().build(manager)?; + let pool = Pool::builder().max_size(threads as u32).build(manager)?; let conn = pool.get()?; conn.execute(TABLE_CREATE, ())?; Ok(pool) @@ -160,7 +163,7 @@ mod tests { let dbname = String::from("temp1.db"); let filenames = ["16bit.flac", "24bit.flac", "32bit.flac"]; let mut counter = 0; - let pool = open_db(Some(&dbname)).unwrap(); + let pool = open_db(Some(&dbname), 10).unwrap(); let conn = Database::new(pool.get().unwrap()); for file in filenames { let _ = conn.insert_file(&file.to_string()); @@ -179,7 +182,7 @@ mod tests { fn check_update() { let dbname = String::from("temp2.db"); let filenames = ["16bit.flac", "24bit.flac", "32bit.flac"]; - let pool = open_db(Some(&dbname)).unwrap(); + let pool = open_db(Some(&dbname), 10).unwrap(); let conn = Database::new(pool.get().unwrap()); for file in filenames { let _ = conn.insert_file(Path::new(file).canonicalize().unwrap()); diff --git a/src/files.rs b/src/files.rs index a92a07a..8b089e8 100644 --- a/src/files.rs +++ b/src/files.rs @@ -229,7 +229,7 @@ mod tests { #[test] fn test_index_lots_of_files() { let handler = Arc::new(AtomicBool::new(true)); - let pool = open_db(Some("temp3.db")).unwrap(); + let pool = open_db(Some("temp3.db"), 10).unwrap(); index_files_recursively(Path::new("./testfiles"), &pool, handler).unwrap(); std::fs::remove_file("temp3.db").unwrap(); } @@ -237,7 +237,7 @@ mod tests { #[test] fn test_reencode_lots_of_files() { let handler = Arc::new(AtomicBool::new(true)); - let pool = open_db(Some("temp4.db")).unwrap(); + let pool = open_db(Some("temp4.db"), 10).unwrap(); let temp = handler.clone(); index_files_recursively(Path::new("./testfiles"), &pool, temp).unwrap(); let conn = Database::new(pool.get().unwrap()); diff --git a/src/main.rs b/src/main.rs index da62d1e..6d0a3d4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -92,7 +92,9 @@ fn main() -> Result<()> { r.store(false, Ordering::SeqCst); })?; - let dbpool = db::open_db(args.get_one::("db"))?; + let threads = *args.get_one::("threads").unwrap(); + + let dbpool = db::open_db(args.get_one::("db"), threads)?; let path = args.get_one::("path"); @@ -104,7 +106,7 @@ fn main() -> Result<()> { } let pool = rayon::ThreadPoolBuilder::new() - .num_threads(*args.get_one::("threads").unwrap()) + .num_threads(threads) .build()?; if let Some(realpath) = path { -- cgit v1.3.1