Boost access before mutex is unlocked
Summary: This moves the use of versions_ to before the mutex is unlocked to avoid a possible race. Task ID: # Blame Rev: Test Plan: make check Revert Plan: Database Impact: Memcache Impact: Other Notes: EImportant: - begin *PUBLIC* platform impact section - Bugzilla: # - end platform impact - Reviewers: haobo, dhruba Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D15279
This commit is contained in:
parent
83681bf9ef
commit
4e8321bfea
@ -3200,15 +3200,15 @@ Status DBImpl::MakeRoomForWrite(bool force,
|
|||||||
// individual write by 0-1ms to reduce latency variance. Also,
|
// individual write by 0-1ms to reduce latency variance. Also,
|
||||||
// this delay hands over some CPU to the compaction thread in
|
// this delay hands over some CPU to the compaction thread in
|
||||||
// case it is sharing the same core as the writer.
|
// case it is sharing the same core as the writer.
|
||||||
|
uint64_t slowdown =
|
||||||
|
SlowdownAmount(versions_->current()->NumLevelFiles(0),
|
||||||
|
options_.level0_slowdown_writes_trigger,
|
||||||
|
options_.level0_stop_writes_trigger);
|
||||||
mutex_.Unlock();
|
mutex_.Unlock();
|
||||||
uint64_t delayed;
|
uint64_t delayed;
|
||||||
{
|
{
|
||||||
StopWatch sw(env_, options_.statistics.get(), STALL_L0_SLOWDOWN_COUNT);
|
StopWatch sw(env_, options_.statistics.get(), STALL_L0_SLOWDOWN_COUNT);
|
||||||
env_->SleepForMicroseconds(
|
env_->SleepForMicroseconds(slowdown);
|
||||||
SlowdownAmount(versions_->current()->NumLevelFiles(0),
|
|
||||||
options_.level0_slowdown_writes_trigger,
|
|
||||||
options_.level0_stop_writes_trigger)
|
|
||||||
);
|
|
||||||
delayed = sw.ElapsedMicros();
|
delayed = sw.ElapsedMicros();
|
||||||
}
|
}
|
||||||
RecordTick(options_.statistics.get(), STALL_L0_SLOWDOWN_MICROS, delayed);
|
RecordTick(options_.statistics.get(), STALL_L0_SLOWDOWN_MICROS, delayed);
|
||||||
|
Loading…
Reference in New Issue
Block a user