1
Fork 0

More error details upon unexpected incr-comp session dir

This commit is contained in:
Martin Nordholts 2023-08-18 19:20:28 +02:00
parent c94cb834d0
commit df8aed400b

View file

@ -538,8 +538,8 @@ where
continue; continue;
} }
let timestamp = extract_timestamp_from_session_dir(&directory_name).unwrap_or_else(|_| { let timestamp = extract_timestamp_from_session_dir(&directory_name).unwrap_or_else(|e| {
bug!("unexpected incr-comp session dir: {}", session_dir.display()) bug!("unexpected incr-comp session dir: {}: {}", session_dir.display(), e)
}); });
if timestamp > best_candidate.0 { if timestamp > best_candidate.0 {
@ -562,14 +562,14 @@ fn is_session_directory_lock_file(file_name: &str) -> bool {
file_name.starts_with("s-") && file_name.ends_with(LOCK_FILE_EXT) file_name.starts_with("s-") && file_name.ends_with(LOCK_FILE_EXT)
} }
fn extract_timestamp_from_session_dir(directory_name: &str) -> Result<SystemTime, ()> { fn extract_timestamp_from_session_dir(directory_name: &str) -> Result<SystemTime, &'static str> {
if !is_session_directory(directory_name) { if !is_session_directory(directory_name) {
return Err(()); return Err("not a directory");
} }
let dash_indices: Vec<_> = directory_name.match_indices('-').map(|(idx, _)| idx).collect(); let dash_indices: Vec<_> = directory_name.match_indices('-').map(|(idx, _)| idx).collect();
if dash_indices.len() != 3 { if dash_indices.len() != 3 {
return Err(()); return Err("not three dashes in name");
} }
string_to_timestamp(&directory_name[dash_indices[0] + 1..dash_indices[1]]) string_to_timestamp(&directory_name[dash_indices[0] + 1..dash_indices[1]])
@ -581,11 +581,11 @@ fn timestamp_to_string(timestamp: SystemTime) -> String {
base_n::encode(micros as u128, INT_ENCODE_BASE) base_n::encode(micros as u128, INT_ENCODE_BASE)
} }
fn string_to_timestamp(s: &str) -> Result<SystemTime, ()> { fn string_to_timestamp(s: &str) -> Result<SystemTime, &'static str> {
let micros_since_unix_epoch = u64::from_str_radix(s, INT_ENCODE_BASE as u32); let micros_since_unix_epoch = u64::from_str_radix(s, INT_ENCODE_BASE as u32);
if micros_since_unix_epoch.is_err() { if micros_since_unix_epoch.is_err() {
return Err(()); return Err("timestamp not an int");
} }
let micros_since_unix_epoch = micros_since_unix_epoch.unwrap(); let micros_since_unix_epoch = micros_since_unix_epoch.unwrap();