From 5010daa7a8d552f46d88a5188ab20e62a5a8ea5e Mon Sep 17 00:00:00 2001 From: heyongqiang Date: Fri, 19 Oct 2012 16:41:34 -0700 Subject: [PATCH] add "seek_compaction" to log for better debug Summary: Summary: as subject Test Plan: compile Reviewers: dhruba Reviewed By: dhruba CC: MarkCallaghan Differential Revision: https://reviews.facebook.net/D6117 --- db/version_set.cc | 16 ++++++++++------ db/version_set.h | 5 ++++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/db/version_set.cc b/db/version_set.cc index b00dc7737b..f11d623216 100644 --- a/db/version_set.cc +++ b/db/version_set.cc @@ -1410,7 +1410,7 @@ Compaction* VersionSet::PickCompaction() { } else if (seek_compaction) { level = current_->file_to_compact_level_; c = new Compaction(level, MaxFileSizeForLevel(level), - MaxGrandParentOverlapBytes(level), NumberLevels()); + MaxGrandParentOverlapBytes(level), NumberLevels(), true); c->inputs_[0].push_back(current_->file_to_compact_); } else { return NULL; @@ -1526,7 +1526,7 @@ Compaction* VersionSet::CompactRange( } Compaction* c = new Compaction(level, limit, - MaxGrandParentOverlapBytes(level), NumberLevels()); + MaxGrandParentOverlapBytes(level), NumberLevels()); c->input_version_ = current_; c->input_version_->Ref(); c->inputs_[0] = inputs; @@ -1535,17 +1535,19 @@ Compaction* VersionSet::CompactRange( } Compaction::Compaction(int level, uint64_t target_file_size, - uint64_t max_grandparent_overlap_bytes, int number_levels) + uint64_t max_grandparent_overlap_bytes, int number_levels, + bool seek_compaction) : level_(level), max_output_file_size_(target_file_size), maxGrandParentOverlapBytes_(max_grandparent_overlap_bytes), input_version_(NULL), number_levels_(number_levels), + seek_compaction_(seek_compaction), grandparent_index_(0), seen_key_(false), overlapped_bytes_(0) { - edit_ = new VersionEdit(number_levels_); - level_ptrs_ = new size_t[number_levels_]; + edit_ = new VersionEdit(number_levels_); + level_ptrs_ = new size_t[number_levels_]; for (int i = 0; i < number_levels_; i++) { level_ptrs_[i] = 0; } @@ -1642,7 +1644,9 @@ static void InputSummary(std::vector& files, } void Compaction::Summary(char* output, int len) { - int write = snprintf(output, len, "Base level %d, inputs:", level_); + int write = snprintf(output, len, + "Base level %d, seek compaction:%d, inputs:", + level_, seek_compaction_); if(write < 0 || write > len) return; diff --git a/db/version_set.h b/db/version_set.h index c9aa2a5d40..5295bd058a 100644 --- a/db/version_set.h +++ b/db/version_set.h @@ -376,7 +376,8 @@ class Compaction { friend class VersionSet; explicit Compaction(int level, uint64_t target_file_size, - uint64_t max_grandparent_overlap_bytes, int number_levels); + uint64_t max_grandparent_overlap_bytes, int number_levels, + bool seek_compaction = false); int level_; uint64_t max_output_file_size_; @@ -385,6 +386,8 @@ class Compaction { VersionEdit* edit_; int number_levels_; + bool seek_compaction_; + // Each compaction reads inputs from "level_" and "level_+1" std::vector inputs_[2]; // The two sets of inputs