diff --git a/report.md b/report.md index 85c59e2..633b824 100644 --- a/report.md +++ b/report.md @@ -398,31 +398,6 @@ int main(int argc, char** argv) { ![image-20241107082315854](assets/image-20241107082315854.png) -## 5.3其他可能出现的问题: - -可能是因为test文件内的数据准备以及硬件的运行速度,有些问题有可能会发生。 - -```cpp -inline bool DBIter::ParseKey(ParsedInternalKey* ikey) { - Slice k = iter_->key(); - - size_t bytes_read = k.size() + iter_->value().size(); - while (bytes_until_read_sampling_ < bytes_read) { - bytes_until_read_sampling_ += RandomCompactionPeriod(); - db_->RecordReadSample(k); - } - - //...... - void DBImpl::RecordReadSample(Slice key) { - MutexLock l(&mutex_); - if (versions_->current()->RecordReadSample(key)) { - MaybeScheduleCompaction(); - } -} -``` - -上述过程是在读取的过程中发生的,当发现key跨文件存在后,它也会触发合并。这就有可能导致,对于testRead文件,如果ttl设置的比较小,在读取key1(file1内)时,发现它跨文件存在于file2,然后触发合并,但是值key2也在file2内,此时有可能过期。这就导致在读取key2前,就已经触发合并,将过期数据删除,这样会导致test报错。 - ## 6.本实验ttl实现与已有ttl实现的比较