diff options
author | Ben Caimano <ben.caimano@mongodb.com> | 2019-09-19 13:38:08 +0000 |
---|---|---|
committer | evergreen <evergreen@mongodb.com> | 2019-09-19 13:38:08 +0000 |
commit | b984ffcd911ae3210bdeb3f109d1033bad30c563 (patch) | |
tree | a54402de955e399749878c48128f1fd85729b4ea /src/mongo/util/clock_source.cpp | |
parent | 7eda962b63ab11427889b13dc3fbbe6df0fd02fb (diff) | |
download | mongo-b984ffcd911ae3210bdeb3f109d1033bad30c563.tar.gz |
SERVER-43374 Extend BasicLockableAdaptor lifetime in waitForConditionUntil
Diffstat (limited to 'src/mongo/util/clock_source.cpp')
-rw-r--r-- | src/mongo/util/clock_source.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/mongo/util/clock_source.cpp b/src/mongo/util/clock_source.cpp index 6f54a1bcc76..ebae9737e73 100644 --- a/src/mongo/util/clock_source.cpp +++ b/src/mongo/util/clock_source.cpp @@ -56,13 +56,13 @@ stdx::cv_status ClockSource::waitForConditionUntil(stdx::condition_variable& cv, struct AlarmInfo { Mutex controlMutex = MONGO_MAKE_LATCH("AlarmInfo::controlMutex"); - BasicLockableAdapter* waitLock; + boost::optional<BasicLockableAdapter> waitLock; stdx::condition_variable* waitCV; stdx::cv_status cvWaitResult = stdx::cv_status::no_timeout; }; auto alarmInfo = std::make_shared<AlarmInfo>(); alarmInfo->waitCV = &cv; - alarmInfo->waitLock = &m; + alarmInfo->waitLock = m; const auto waiterThreadId = stdx::this_thread::get_id(); bool invokedAlarmInline = false; invariant(setAlarm(deadline, [alarmInfo, waiterThreadId, &invokedAlarmInline] { @@ -88,7 +88,7 @@ stdx::cv_status ClockSource::waitForConditionUntil(stdx::condition_variable& cv, m.unlock(); stdx::lock_guard<Latch> controlLk(alarmInfo->controlMutex); m.lock(); - alarmInfo->waitLock = nullptr; + alarmInfo->waitLock = boost::none; alarmInfo->waitCV = nullptr; return alarmInfo->cvWaitResult; } |