Skip to content

Commit 3cd51c5

Browse files
committed
fix ci
1 parent 17d940c commit 3cd51c5

File tree

1 file changed

+15
-25
lines changed

1 file changed

+15
-25
lines changed

src/wal/src/local_storage_impl/segment.rs

+15-25
Original file line numberDiff line numberDiff line change
@@ -654,7 +654,7 @@ impl Region {
654654
let mut all_segments = HashMap::new();
655655

656656
// Scan the directory for existing WAL files
657-
let mut max_segment_id: i32 = -1;
657+
let mut max_segment_id: u64 = 0;
658658
let mut next_sequence_num: u64 = MIN_SEQUENCE_NUMBER + 1;
659659

660660
// Segment file naming convention: {SEGMENT_NAME_PREFIX}{id}
@@ -673,25 +673,20 @@ impl Region {
673673

674674
let segment = Segment::new(filename.to_string(), segment_id, segment_size)?;
675675
next_sequence_num = next_sequence_num.max(segment.max_seq + 1);
676+
max_segment_id = max_segment_id.max(segment_id);
676677
let segment = Arc::new(Mutex::new(segment));
677-
678-
if segment_id as i32 > max_segment_id {
679-
max_segment_id = segment_id as i32;
680-
}
681678
all_segments.insert(segment_id, segment);
682679
}
683680

684681
// If no existing segments, create a new one
685-
if max_segment_id == -1 {
686-
max_segment_id = 0;
687-
let path = format!("{region_dir}/{SEGMENT_NAME_PREFIX}{max_segment_id}");
688-
let new_segment = Segment::new(path, max_segment_id as u64, segment_size)?;
689-
let new_segment = Arc::new(Mutex::new(new_segment));
690-
all_segments.insert(0, new_segment);
682+
if all_segments.is_empty() {
683+
all_segments.insert(
684+
max_segment_id,
685+
Self::create_new_segment(&region_dir, max_segment_id, segment_size)?,
686+
);
691687
}
692688

693-
let latest_segment = all_segments.get(&(max_segment_id as u64)).unwrap().clone();
694-
689+
let latest_segment = all_segments.get(&max_segment_id).unwrap().clone();
695690
let segment_manager = SegmentManager {
696691
all_segments: Mutex::new(all_segments),
697692
cache: Mutex::new(VecDeque::new()),
@@ -711,17 +706,9 @@ impl Region {
711706
})
712707
}
713708

714-
fn create_new_segment(&self, id: u64) -> Result<Arc<Mutex<Segment>>> {
715-
// Create a new segment
716-
let new_segment = Segment::new(
717-
format!("{}/segment_{}.wal", self.region_dir, id),
718-
id,
719-
self.segment_size,
720-
)?;
721-
let new_segment = Arc::new(Mutex::new(new_segment));
722-
self.segment_manager.add_segment(id, new_segment.clone())?;
723-
724-
Ok(new_segment)
709+
fn create_new_segment(dir: &str, id: u64, size: usize) -> Result<Arc<Mutex<Segment>>> {
710+
let new_segment = Segment::new(format!("{dir}/{SEGMENT_NAME_PREFIX}{id}"), id, size)?;
711+
Ok(Arc::new(Mutex::new(new_segment)))
725712
}
726713

727714
pub fn write(&self, _ctx: &WriteContext, batch: &LogWriteBatch) -> Result<SequenceNumber> {
@@ -766,7 +753,10 @@ impl Region {
766753
let new_segment_id = guard.id + 1;
767754
drop(guard);
768755

769-
*current_segment = self.create_new_segment(new_segment_id)?;
756+
*current_segment =
757+
Self::create_new_segment(&self.region_dir, new_segment_id, self.segment_size)?;
758+
self.segment_manager
759+
.add_segment(new_segment_id, current_segment.clone())?;
770760
}
771761
}
772762

0 commit comments

Comments
 (0)