Skip to content

Commit e9c50fb

Browse files
committed
sort cold before warm sst files
1 parent 9a524c1 commit e9c50fb

File tree

1 file changed

+9
-7
lines changed
  • turbopack/crates/turbo-persistence/src

1 file changed

+9
-7
lines changed

turbopack/crates/turbo-persistence/src/db.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::{
33
collections::HashSet,
44
fs::{self, File, OpenOptions, ReadDir},
55
io::{BufWriter, Write},
6-
mem::swap,
6+
mem::{swap, take},
77
ops::RangeInclusive,
88
path::{Path, PathBuf},
99
sync::atomic::{AtomicBool, AtomicU32, Ordering},
@@ -1003,8 +1003,6 @@ impl<S: ParallelScheduler, const FAMILIES: usize> TurboPersistence<S, FAMILIES>
10031003
Ok((seq, file, meta))
10041004
}
10051005

1006-
let mut new_sst_files = Vec::new();
1007-
10081006
// Iterate all SST files
10091007
let iters = indicies
10101008
.iter()
@@ -1035,6 +1033,8 @@ impl<S: ParallelScheduler, const FAMILIES: usize> TurboPersistence<S, FAMILIES>
10351033
total_value_size: usize,
10361034
last_entries: Vec<LookupEntry<'l>>,
10371035
last_entries_total_key_size: usize,
1036+
new_sst_files:
1037+
Vec<(u32, File, StaticSortedFileBuilderMeta<'static>)>,
10381038
}
10391039
let mut used_collector = Collector::default();
10401040
let mut unused_collector = Collector::default();
@@ -1084,7 +1084,7 @@ impl<S: ParallelScheduler, const FAMILIES: usize> TurboPersistence<S, FAMILIES>
10841084

10851085
let mut flags = MetaEntryFlags::default();
10861086
flags.set_cold(!is_used);
1087-
new_sst_files.push(create_sst_file(
1087+
collector.new_sst_files.push(create_sst_file(
10881088
&self.parallel_scheduler,
10891089
&collector.entries,
10901090
selected_total_key_size,
@@ -1132,7 +1132,7 @@ impl<S: ParallelScheduler, const FAMILIES: usize> TurboPersistence<S, FAMILIES>
11321132
sequence_number.fetch_add(1, Ordering::SeqCst) + 1;
11331133

11341134
keys_written += collector.entries.len() as u64;
1135-
new_sst_files.push(create_sst_file(
1135+
collector.new_sst_files.push(create_sst_file(
11361136
&self.parallel_scheduler,
11371137
&collector.entries,
11381138
collector.total_key_size,
@@ -1160,7 +1160,7 @@ impl<S: ParallelScheduler, const FAMILIES: usize> TurboPersistence<S, FAMILIES>
11601160
sequence_number.fetch_add(1, Ordering::SeqCst) + 1;
11611161

11621162
keys_written += part1.len() as u64;
1163-
new_sst_files.push(create_sst_file(
1163+
collector.new_sst_files.push(create_sst_file(
11641164
&self.parallel_scheduler,
11651165
part1,
11661166
// We don't know the exact sizes so we estimate them
@@ -1171,7 +1171,7 @@ impl<S: ParallelScheduler, const FAMILIES: usize> TurboPersistence<S, FAMILIES>
11711171
)?);
11721172

11731173
keys_written += part2.len() as u64;
1174-
new_sst_files.push(create_sst_file(
1174+
collector.new_sst_files.push(create_sst_file(
11751175
&self.parallel_scheduler,
11761176
part2,
11771177
collector.last_entries_total_key_size / 2,
@@ -1181,6 +1181,8 @@ impl<S: ParallelScheduler, const FAMILIES: usize> TurboPersistence<S, FAMILIES>
11811181
)?);
11821182
}
11831183
}
1184+
let mut new_sst_files = take(&mut unused_collector.new_sst_files);
1185+
new_sst_files.append(&mut used_collector.new_sst_files);
11841186
Ok(PartialMergeResult::Merged {
11851187
new_sst_files,
11861188
blob_seq_numbers_to_delete,

0 commit comments

Comments
 (0)