Skip to content

Commit d6abc87

Browse files
committed
fix: optimize check mode
1 parent be75f98 commit d6abc87

File tree

1 file changed

+24
-18
lines changed

1 file changed

+24
-18
lines changed

src/optimizer.rs

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,29 +19,35 @@ pub fn optimize_region_file(
1919
let chunks = region.get_chunks();
2020
result.total_chunks += chunks.len();
2121

22-
let mut chunks_to_delete = Vec::new();
23-
for chunk in chunks {
24-
if chunk.should_delete() {
25-
chunks_to_delete.push(chunk.clone());
22+
if write {
23+
let mut chunks_to_delete = Vec::new();
24+
for chunk in chunks {
25+
if chunk.should_delete() {
26+
chunks_to_delete.push(chunk.clone());
27+
}
2628
}
27-
}
28-
result.deleted_chunks += chunks_to_delete.len();
29+
result.deleted_chunks += chunks_to_delete.len();
2930

30-
for chunk in &chunks_to_delete {
31-
region.remove_chunk(chunk);
32-
}
31+
for chunk in &chunks_to_delete {
32+
region.remove_chunk(chunk);
33+
}
3334

34-
if region.is_empty() {
35-
result.deleted_regions += 1;
36-
if write {
35+
if region.is_empty() {
36+
result.deleted_regions += 1;
3737
std::fs::remove_file(region_file_path)?;
38+
} else {
39+
let bytes = region.to_bytes();
40+
std::fs::write(region_file_path, bytes)?;
41+
}
42+
} else {
43+
for chunk in chunks {
44+
if chunk.should_delete() {
45+
result.deleted_chunks += 1;
46+
}
47+
}
48+
if result.deleted_chunks >= result.total_chunks {
49+
result.deleted_regions += 1;
3850
}
39-
return Ok(result);
40-
}
41-
42-
if write {
43-
let bytes = region.to_bytes();
44-
std::fs::write(region_file_path, bytes)?;
4551
}
4652
}
4753
Err(_) => {

0 commit comments

Comments
 (0)