From c5f66de1109b552ce57bf406e34d3fd714c44c23 Mon Sep 17 00:00:00 2001 From: Matthew Von-Maszewski Date: Tue, 6 Jul 2021 15:19:34 -0400 Subject: [PATCH] BugFix: fix merge helper clock usage and rehack LoadTableHandlers (#30) --- db/merge_helper.cc | 4 +++- db/version_builder.cc | 19 ++++++++++++------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/db/merge_helper.cc b/db/merge_helper.cc index ed2646ea1..6c8fbdd70 100644 --- a/db/merge_helper.cc +++ b/db/merge_helper.cc @@ -414,7 +414,9 @@ CompactionFilter::Decision MergeHelper::FilterMerge(const Slice& user_key, kValueTypeForSeek); } } - total_filter_time_ += filter_timer_.ElapsedNanosSafe(); + if (stats_ != nullptr && ShouldReportDetailedTime(env_, stats_)) { + total_filter_time_ += filter_timer_.ElapsedNanosSafe(); + } return ret; } diff --git a/db/version_builder.cc b/db/version_builder.cc index bece59686..23478828b 100644 --- a/db/version_builder.cc +++ b/db/version_builder.cc @@ -904,6 +904,11 @@ class VersionBuilder::Rep { size_t table_cache_capacity = table_cache_->get_cache()->GetCapacity(); bool always_load = (table_cache_capacity == TableCache::kInfiniteCapacity); size_t max_load = port::kMaxSizet; +#ifndef NDEBUG + bool debug_override = true; // to enable CompactedDB related tests and some property tests +#else + bool debug_override = false; +#endif if (!always_load) { // If it is initial loading and not set to always loading all the @@ -976,16 +981,16 @@ class VersionBuilder::Rep { // The issue is that number 2 creates permanent objects in the // table cache which over time are no longer useful. The code // adjustment below keeps #1 and disables #2. -#if 0 if (file_meta->table_reader_handle != nullptr) { // Load table_reader - file_meta->fd.table_reader = table_cache_->GetTableReaderFromHandle( - file_meta->table_reader_handle); + if (always_load || debug_override) { + file_meta->fd.table_reader = table_cache_->GetTableReaderFromHandle( + file_meta->table_reader_handle); + } else { + table_cache_->ReleaseHandle(file_meta->table_reader_handle); + file_meta->table_reader_handle = nullptr; + } // else } -#else - table_cache_->ReleaseHandle(file_meta->table_reader_handle); - file_meta->table_reader_handle = nullptr; -#endif } });