Unverified Commit c480fea7 authored by Connor's avatar Connor Committed by GitHub

Fix discardable ratio count stat (#157)

After creating a new blob file meta, the live data size is 0. The stat is counted when adding the blob file but with live_data_size == 0. So we should update the stat when the live data size is initialized.
Signed-off-by: 's avatarConnor <zbk602423539@gmail.com>
parent 927ee609
...@@ -1143,7 +1143,14 @@ void TitanDBImpl::OnFlushCompleted(const FlushJobInfo& flush_job_info) { ...@@ -1143,7 +1143,14 @@ void TitanDBImpl::OnFlushCompleted(const FlushJobInfo& flush_job_info) {
assert(false); assert(false);
delta = 0; delta = 0;
} }
// the metrics is counted in the table builder when flushing,
// so update it when updateing the live data size.
SubStats(stats_.get(), flush_job_info.cf_id,
file->GetDiscardableRatioLevel(), 1);
file->set_live_data_size(static_cast<uint64_t>(delta)); file->set_live_data_size(static_cast<uint64_t>(delta));
AddStats(stats_.get(), flush_job_info.cf_id,
file->GetDiscardableRatioLevel(), 1);
file->FileStateTransit(BlobFileMeta::FileEvent::kFlushCompleted); file->FileStateTransit(BlobFileMeta::FileEvent::kFlushCompleted);
ROCKS_LOG_INFO(db_options_.info_log, ROCKS_LOG_INFO(db_options_.info_log,
"OnFlushCompleted[%d]: output blob file %" PRIu64 "OnFlushCompleted[%d]: output blob file %" PRIu64
...@@ -1232,7 +1239,11 @@ void TitanDBImpl::OnCompactionCompleted( ...@@ -1232,7 +1239,11 @@ void TitanDBImpl::OnCompactionCompleted(
assert(false); assert(false);
delta = 0; delta = 0;
} }
SubStats(stats_.get(), compaction_job_info.cf_id,
file->GetDiscardableRatioLevel(), 1);
file->set_live_data_size(static_cast<uint64_t>(delta)); file->set_live_data_size(static_cast<uint64_t>(delta));
AddStats(stats_.get(), compaction_job_info.cf_id,
file->GetDiscardableRatioLevel(), 1);
file->FileStateTransit(BlobFileMeta::FileEvent::kCompactionCompleted); file->FileStateTransit(BlobFileMeta::FileEvent::kCompactionCompleted);
to_merge_candidates.push_back(file); to_merge_candidates.push_back(file);
ROCKS_LOG_INFO( ROCKS_LOG_INFO(
......
...@@ -83,7 +83,11 @@ Status TitanDBImpl::InitializeGC( ...@@ -83,7 +83,11 @@ Status TitanDBImpl::InitializeGC(
blob_storage->FindFile(file_size.first).lock(); blob_storage->FindFile(file_size.first).lock();
if (file != nullptr) { if (file != nullptr) {
assert(file->live_data_size() == 0); assert(file->live_data_size() == 0);
SubStats(stats_.get(), cf_handle->GetID(),
file->GetDiscardableRatioLevel(), 1);
file->set_live_data_size(static_cast<uint64_t>(file_size.second)); file->set_live_data_size(static_cast<uint64_t>(file_size.second));
AddStats(stats_.get(), cf_handle->GetID(),
file->GetDiscardableRatioLevel(), 1);
} }
} }
blob_storage->InitializeAllFiles(); blob_storage->InitializeAllFiles();
......
...@@ -416,6 +416,7 @@ TEST_F(TitanDBTest, DBIterSeek) { ...@@ -416,6 +416,7 @@ TEST_F(TitanDBTest, DBIterSeek) {
} }
TEST_F(TitanDBTest, GetProperty) { TEST_F(TitanDBTest, GetProperty) {
options_.disable_background_gc = false;
Open(); Open();
for (uint64_t k = 1; k <= 100; k++) { for (uint64_t k = 1; k <= 100; k++) {
Put(k); Put(k);
...@@ -424,9 +425,69 @@ TEST_F(TitanDBTest, GetProperty) { ...@@ -424,9 +425,69 @@ TEST_F(TitanDBTest, GetProperty) {
uint64_t value; uint64_t value;
ASSERT_TRUE(GetIntProperty(TitanDB::Properties::kNumLiveBlobFile, &value)); ASSERT_TRUE(GetIntProperty(TitanDB::Properties::kNumLiveBlobFile, &value));
ASSERT_EQ(value, 1); ASSERT_EQ(value, 1);
ASSERT_TRUE(
GetIntProperty(TitanDB::Properties::kNumDiscardableRatioLE0File, &value));
ASSERT_EQ(value, 1);
Reopen();
ASSERT_TRUE(GetIntProperty(TitanDB::Properties::kNumLiveBlobFile, &value));
ASSERT_EQ(value, 1);
ASSERT_TRUE(
GetIntProperty(TitanDB::Properties::kNumDiscardableRatioLE0File, &value));
ASSERT_EQ(value, 1);
ASSERT_TRUE(GetIntProperty(TitanDB::Properties::kNumDiscardableRatioLE20File,
&value));
ASSERT_EQ(value, 0);
ASSERT_TRUE(GetIntProperty(TitanDB::Properties::kNumDiscardableRatioLE50File,
&value));
ASSERT_EQ(value, 0);
ASSERT_TRUE(GetIntProperty(TitanDB::Properties::kNumDiscardableRatioLE80File,
&value));
ASSERT_EQ(value, 0);
ASSERT_TRUE(GetIntProperty(TitanDB::Properties::kNumDiscardableRatioLE100File,
&value));
ASSERT_EQ(value, 0);
for (uint64_t k = 1; k <= 100; k++) {
if (k % 3 == 0) Delete(k);
}
Flush();
CompactAll();
ASSERT_TRUE(
GetIntProperty(TitanDB::Properties::kNumDiscardableRatioLE0File, &value));
ASSERT_EQ(value, 0);
ASSERT_TRUE(GetIntProperty(TitanDB::Properties::kNumDiscardableRatioLE50File,
&value));
ASSERT_EQ(value, 1);
Reopen(); Reopen();
ASSERT_TRUE(
GetIntProperty(TitanDB::Properties::kNumDiscardableRatioLE0File, &value));
ASSERT_EQ(value, 0);
ASSERT_TRUE(GetIntProperty(TitanDB::Properties::kNumDiscardableRatioLE50File,
&value));
ASSERT_EQ(value, 1);
for (uint64_t k = 1; k <= 100; k++) {
if (k % 3 != 0) Delete(k);
}
Flush();
CompactAll();
db_impl_->TEST_WaitForBackgroundGC();
ASSERT_TRUE(GetIntProperty(TitanDB::Properties::kNumLiveBlobFile, &value)); ASSERT_TRUE(GetIntProperty(TitanDB::Properties::kNumLiveBlobFile, &value));
ASSERT_EQ(value, 0);
ASSERT_TRUE(
GetIntProperty(TitanDB::Properties::kNumObsoleteBlobFile, &value));
ASSERT_EQ(value, 1); ASSERT_EQ(value, 1);
ASSERT_OK(db_impl_->TEST_PurgeObsoleteFiles());
ASSERT_TRUE(
GetIntProperty(TitanDB::Properties::kNumObsoleteBlobFile, &value));
ASSERT_EQ(value, 0);
ASSERT_TRUE(GetIntProperty(TitanDB::Properties::kNumDiscardableRatioLE50File,
&value));
ASSERT_EQ(value, 0);
} }
TEST_F(TitanDBTest, Snapshot) { TEST_F(TitanDBTest, Snapshot) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment