Adding stat to count cancelled compactions

Summary:
Added a stat that counts the number of cancelled compactions.
Closes https://github.com/facebook/rocksdb/pull/3574

Differential Revision: D7190259

Pulled By: amytai

fbshipit-source-id: d5ce82dc9398da6d6d34023ad4ed8cec909852a3
main
Amy Tai 7 years ago committed by Facebook Github Bot
parent a3a3f5497c
commit e476d0e252
  1. 1
      db/db_impl_compaction_flush.cc
  2. 6
      db/db_sst_test.cc
  3. 4
      include/rocksdb/statistics.h

@ -1668,6 +1668,7 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
// Don't need to sleep here, because BackgroundCallCompaction // Don't need to sleep here, because BackgroundCallCompaction
// will sleep if !s.ok() // will sleep if !s.ok()
status = Status::CompactionTooLarge(); status = Status::CompactionTooLarge();
RecordTick(stats_, COMPACTION_CANCELLED, 1);
} else { } else {
// update statistics // update statistics
MeasureTime(stats_, NUM_FILES_IN_SINGLE_COMPACTION, MeasureTime(stats_, NUM_FILES_IN_SINGLE_COMPACTION,

@ -547,13 +547,12 @@ TEST_F(DBSSTTest, CancellingCompactionsWorks) {
Options options = CurrentOptions(); Options options = CurrentOptions();
options.sst_file_manager = sst_file_manager; options.sst_file_manager = sst_file_manager;
options.level0_file_num_compaction_trigger = 2; options.level0_file_num_compaction_trigger = 2;
options.statistics = CreateDBStatistics();
DestroyAndReopen(options); DestroyAndReopen(options);
int cancelled_compaction = 0;
int completed_compactions = 0; int completed_compactions = 0;
rocksdb::SyncPoint::GetInstance()->SetCallBack( rocksdb::SyncPoint::GetInstance()->SetCallBack(
"DBImpl::BackgroundCompaction():CancelledCompaction", [&](void* arg) { "DBImpl::BackgroundCompaction():CancelledCompaction", [&](void* arg) {
cancelled_compaction++;
sfm->SetMaxAllowedSpaceUsage(0); sfm->SetMaxAllowedSpaceUsage(0);
}); });
rocksdb::SyncPoint::GetInstance()->SetCallBack( rocksdb::SyncPoint::GetInstance()->SetCallBack(
@ -580,9 +579,10 @@ TEST_F(DBSSTTest, CancellingCompactionsWorks) {
ASSERT_OK(Flush()); ASSERT_OK(Flush());
dbfull()->TEST_WaitForCompact(true); dbfull()->TEST_WaitForCompact(true);
ASSERT_GT(cancelled_compaction, 0);
ASSERT_GT(completed_compactions, 0); ASSERT_GT(completed_compactions, 0);
ASSERT_EQ(sfm->GetCompactionsReservedSize(), 0); ASSERT_EQ(sfm->GetCompactionsReservedSize(), 0);
// Make sure the stat is bumped
ASSERT_GT(dbfull()->immutable_db_options().statistics.get()->getTickerCount(COMPACTION_CANCELLED), 0);
rocksdb::SyncPoint::GetInstance()->DisableProcessing(); rocksdb::SyncPoint::GetInstance()->DisableProcessing();
} }

@ -108,6 +108,8 @@ enum Tickers : uint32_t {
COMPACTION_RANGE_DEL_DROP_OBSOLETE, // all keys in range were deleted. COMPACTION_RANGE_DEL_DROP_OBSOLETE, // all keys in range were deleted.
// Deletions obsoleted before bottom level due to file gap optimization. // Deletions obsoleted before bottom level due to file gap optimization.
COMPACTION_OPTIMIZED_DEL_DROP_OBSOLETE, COMPACTION_OPTIMIZED_DEL_DROP_OBSOLETE,
// If a compaction was cancelled in sfm to prevent ENOSPC
COMPACTION_CANCELLED,
// Number of keys written to the database via the Put and Write call's // Number of keys written to the database via the Put and Write call's
NUMBER_KEYS_WRITTEN, NUMBER_KEYS_WRITTEN,
@ -347,6 +349,8 @@ const std::vector<std::pair<Tickers, std::string>> TickersNameMap = {
"rocksdb.compaction.range_del.drop.obsolete"}, "rocksdb.compaction.range_del.drop.obsolete"},
{COMPACTION_OPTIMIZED_DEL_DROP_OBSOLETE, {COMPACTION_OPTIMIZED_DEL_DROP_OBSOLETE,
"rocksdb.compaction.optimized.del.drop.obsolete"}, "rocksdb.compaction.optimized.del.drop.obsolete"},
{COMPACTION_CANCELLED,
"rocksdb.compaction.cancelled"},
{NUMBER_KEYS_WRITTEN, "rocksdb.number.keys.written"}, {NUMBER_KEYS_WRITTEN, "rocksdb.number.keys.written"},
{NUMBER_KEYS_READ, "rocksdb.number.keys.read"}, {NUMBER_KEYS_READ, "rocksdb.number.keys.read"},
{NUMBER_KEYS_UPDATED, "rocksdb.number.keys.updated"}, {NUMBER_KEYS_UPDATED, "rocksdb.number.keys.updated"},

Loading…
Cancel
Save