From 4f0145e161300baaa2e41539dcd99c0a84f315ea Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Fri, 4 Feb 2022 16:59:29 +0100 Subject: [PATCH] Sort directory entries in config scan --- .../src/services/config_watcher.rs | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/syndicate-server/src/services/config_watcher.rs b/syndicate-server/src/services/config_watcher.rs index 3ce7d16..b0c4a3a 100644 --- a/syndicate-server/src/services/config_watcher.rs +++ b/syndicate-server/src/services/config_watcher.rs @@ -145,13 +145,20 @@ fn initial_scan( scan_file(t, path_state, env); } else { match fs::read_dir(&env.path) { - Ok(entries) => for er in entries { - match er { - Ok(e) => - initial_scan(t, path_state, config_ds, env.clone_with_path(e.path())), - Err(e) => - tracing::warn!( - "initial_scan: transient during scan of {:?}: {:?}", &env.path, e), + Ok(unsorted_entries) => { + let mut entries: Vec = Vec::new(); + for er in unsorted_entries { + match er { + Ok(e) => + entries.push(e), + Err(e) => + tracing::warn!( + "initial_scan: transient during scan of {:?}: {:?}", &env.path, e), + } + } + entries.sort_by_key(|e| e.file_name()); + for e in entries { + initial_scan(t, path_state, config_ds, env.clone_with_path(e.path())); } } Err(e) => tracing::warn!("initial_scan: enumerating {:?}: {:?}", &env.path, e),