Fix blob db crash during calculating write amp
Summary: On initial call to BlobDBImpl::WaStats() `all_periods_write_` would be empty, so it will crash when we call pop_front() at line 1627. Apparently it is mean to pop only when `all_periods_write_.size() > kWriteAmplificationStatsPeriods`. The whole write amp calculation doesn't seems to be correct and it is not being exposed. Will work on it later. Test Plan Change kWriteAmplificationStatsPeriodMillisecs to 1000 (1 second) and run db_bench --use_blob_db for 5 minutes. Closes https://github.com/facebook/rocksdb/pull/2751 Differential Revision: D5648269 Pulled By: yiwu-arbug fbshipit-source-id: b843d9a09bb5f9e1b713d101ec7b87e54b5115a4
This commit is contained in:
parent
8f2598ac9d
commit
29877ec7b4
@ -1615,12 +1615,13 @@ std::pair<bool, int64_t> BlobDBImpl::ReclaimOpenFiles(bool aborted) {
|
||||
return std::make_pair(true, -1);
|
||||
}
|
||||
|
||||
// TODO(yiwu): correct the stats and expose it.
|
||||
std::pair<bool, int64_t> BlobDBImpl::WaStats(bool aborted) {
|
||||
if (aborted) return std::make_pair(false, -1);
|
||||
|
||||
WriteLock wl(&mutex_);
|
||||
|
||||
if (all_periods_write_.size() < kWriteAmplificationStatsPeriods) {
|
||||
if (all_periods_write_.size() >= kWriteAmplificationStatsPeriods) {
|
||||
total_periods_write_ -= (*all_periods_write_.begin());
|
||||
total_periods_ampl_ = (*all_periods_ampl_.begin());
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user