From 995a75a72779a94bec1280716be85c536e8dde82 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Fri, 22 Nov 2024 11:20:56 +0200 Subject: Implement primary index refresh --- log_db/src/common.rs | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'log_db/src/common.rs') diff --git a/log_db/src/common.rs b/log_db/src/common.rs index 6fd4c1f..e384a8f 100644 --- a/log_db/src/common.rs +++ b/log_db/src/common.rs @@ -564,18 +564,9 @@ pub fn create_segment_metadata_file( Ok((new_num, metadata_path)) } -/// Get the number of the segment with the greatest ordinal. -/// This is the newest segment, i.e. the one that is pointed to by the `active` symlink. -/// If there are no segments yet, returns 0. -pub fn greatest_segment_number(data_dir_path: &Path) -> Result { - let active_symlink = data_dir_path.join(ACTIVE_SYMLINK_FILENAME); - - if !fs::exists(&active_symlink)? { - return Ok(0); - } - - let segment_metadata_path = fs::read_link(&active_symlink)?; - let filename = segment_metadata_path +/// Parse the segment number from a metadata file path +pub fn parse_segment_number(metadata_path: &Path) -> Result { + let filename = metadata_path .file_name() .expect("No filename in symlink") .to_str() @@ -596,6 +587,20 @@ pub fn greatest_segment_number(data_dir_path: &Path) -> Result { }) } +/// Get the number of the segment with the greatest ordinal. +/// This is the newest segment, i.e. the one that is pointed to by the `active` symlink. +/// If there are no segments yet, returns 0. +pub fn greatest_segment_number(data_dir_path: &Path) -> Result { + let active_symlink = data_dir_path.join(ACTIVE_SYMLINK_FILENAME); + + if !fs::exists(&active_symlink)? { + return Ok(0); + } + + let segment_metadata_path = fs::read_link(&active_symlink)?; + parse_segment_number(&segment_metadata_path) +} + /// Create a new segment data file and return its UUID. /// A data file contains the segment data, tightly packed without separators. /// An accompanying metadata file is required to interpret the data. -- cgit v1.3