mirror of https://github.com/facebook/rocksdb.git
Remove early return when scanning files for temperature change compaction (#13112)
Summary: This is a small follow-up to https://github.com/facebook/rocksdb/pull/13083. When we check the `newest_key_time` of files for temperature change compaction, we currently return early if we ever find a file with an unknown `est_newest_key_time`. However, it is possible for a younger file to have a populated value for `newest_key_time`, since this is a new table property. Pull Request resolved: https://github.com/facebook/rocksdb/pull/13112 Test Plan: The existing unit tests are sufficient. Reviewed By: cbi42 Differential Revision: D65451797 Pulled By: archang19 fbshipit-source-id: 28e67c2d35a6315f912471f2848de87dd7088d99
This commit is contained in:
parent
3becc9409e
commit
a7ecbfd590
|
@ -370,8 +370,11 @@ Compaction* FIFOCompactionPicker::PickTemperatureChangeCompaction(
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
uint64_t est_newest_key_time = cur_file->TryGetNewestKeyTime(prev_file);
|
uint64_t est_newest_key_time = cur_file->TryGetNewestKeyTime(prev_file);
|
||||||
if (est_newest_key_time == kUnknownNewestKeyTime ||
|
// Newer file could have newest_key_time populated
|
||||||
est_newest_key_time > create_time_threshold) {
|
if (est_newest_key_time == kUnknownNewestKeyTime) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (est_newest_key_time > create_time_threshold) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
Temperature cur_target_temp = ages[0].temperature;
|
Temperature cur_target_temp = ages[0].temperature;
|
||||||
|
|
|
@ -3397,8 +3397,11 @@ bool ShouldChangeFileTemperature(const ImmutableOptions& ioptions,
|
||||||
FileMetaData* prev_file = index < 2 ? nullptr : files[index - 2];
|
FileMetaData* prev_file = index < 2 ? nullptr : files[index - 2];
|
||||||
if (!cur_file->being_compacted) {
|
if (!cur_file->being_compacted) {
|
||||||
uint64_t est_newest_key_time = cur_file->TryGetNewestKeyTime(prev_file);
|
uint64_t est_newest_key_time = cur_file->TryGetNewestKeyTime(prev_file);
|
||||||
if (est_newest_key_time == kUnknownNewestKeyTime ||
|
// Newer file could have newest_key_time populated
|
||||||
est_newest_key_time > create_time_threshold) {
|
if (est_newest_key_time == kUnknownNewestKeyTime) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (est_newest_key_time > create_time_threshold) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
target_temp = ages[0].temperature;
|
target_temp = ages[0].temperature;
|
||||||
|
|
Loading…
Reference in New Issue