Skip to content

Commit 49156bd

Browse files
abhinavdangetichiyoung
authored andcommitted
Address possible data race with startuptime
WARNING: ThreadSanitizer: data race (pid=14344) Read of size 8 at 0x7d780000fa58 by thread T6: #0 void STATWRITER_NAMESPACE::add_casted_stat<long>(char const*, long const&, void (*)(char const*, unsigned short, char const*, unsigned int, void const*), void const*) /home/abhinav/couchbase/ep-engine/src/statwriter.h:45 (ep.so+0x000000037ff5) couchbase#1 EventuallyPersistentEngine::doEngineStats(void const*, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) /home/abhinav/couchbase/ep-engine/src/ep_engine.cc:3557 (ep.so+0x0000000be990) couchbase#2 EventuallyPersistentEngine::getStats(void const*, char const*, int, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) /home/abhinav/couchbase/ep-engine/src/ep_engine.cc:4554 (ep.so+0x0000000c5c8c) couchbase#3 EventuallyPersistentStore::snapshotStats() /home/abhinav/couchbase/ep-engine/src/ep.cc:1671 (ep.so+0x00000008f1fe) couchbase#4 StatSnap::run() /home/abhinav/couchbase/ep-engine/src/tasks.cc:97 (ep.so+0x00000013cea6) couchbase#5 ExecutorThread::run() /home/abhinav/couchbase/ep-engine/src/executorthread.cc:112 (ep.so+0x0000000f94e3) #6 launch_executor_thread(void*) /home/abhinav/couchbase/ep-engine/src/executorthread.cc:33 (ep.so+0x0000000f9065) #7 platform_thread_wrap /home/abhinav/couchbase/platform/src/cb_pthreads.c:23 (libplatform.so.0.1.0+0x000000003d31) Previous write of size 8 at 0x7d780000fa58 by main thread: #0 EventuallyPersistentEngine::initialize(char const*) /home/abhinav/couchbase/ep-engine/src/ep_engine.cc:2167 (ep.so+0x0000000b728a) couchbase#1 EvpInitialize(engine_interface*, char const*) /home/abhinav/couchbase/ep-engine/src/ep_engine.cc:133 (ep.so+0x0000000b4aa8) couchbase#2 init_engine_instance /home/abhinav/couchbase/memcached/utilities/engine_loader.c:157 (libmcd_util.so.1.0.0+0x0000000058bb) couchbase#3 create_bucket(bool, char const*) /home/abhinav/couchbase/memcached/programs/engine_testapp/engine_testapp.cc:980 (engine_testapp+0x0000000b9e12) couchbase#4 execute_test(test, char const*, char const*) /home/abhinav/couchbase/memcached/programs/engine_testapp/engine_testapp.cc:1083 (engine_testapp+0x0000000b93db) couchbase#5 __libc_start_main /build/buildd/eglibc-2.19/csu/libc-start.c:287 (libc.so.6+0x000000021ec4) Change-Id: Ibec6c267f9138aab626359c703fc067f91e1ee43 Reviewed-on: http://review.couchbase.org/55776 Tested-by: buildbot <[email protected]> Reviewed-by: Chiyoung Seo <[email protected]>
1 parent c26acb7 commit 49156bd

File tree

2 files changed

+3
-3
lines changed

2 files changed

+3
-3
lines changed

src/ep_engine.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2164,7 +2164,7 @@ ENGINE_ERROR_CODE EventuallyPersistentEngine::initialize(const char* config) {
21642164
dcpConnMap_->initialize(DCP_CONN_NOTIFIER);
21652165

21662166
// record engine initialization time
2167-
startupTime = ep_real_time();
2167+
startupTime.store(ep_real_time());
21682168

21692169
LOG(EXTENSION_LOG_DEBUG, "Engine init complete.\n");
21702170

@@ -3554,7 +3554,7 @@ ENGINE_ERROR_CODE EventuallyPersistentEngine::doEngineStats(const void *cookie,
35543554
add_stat, cookie);
35553555
}
35563556

3557-
add_casted_stat("ep_startup_time", startupTime, add_stat, cookie);
3557+
add_casted_stat("ep_startup_time", startupTime.load(), add_stat, cookie);
35583558

35593559
if (getConfiguration().isWarmup()) {
35603560
Warmup *wp = epstore->getWarmup();

src/ep_engine.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1034,7 +1034,7 @@ class EventuallyPersistentEngine : public ENGINE_HANDLE_V1 {
10341034
bool flushAllEnabled;
10351035
// a unique system generated token initialized at each time
10361036
// ep_engine starts up.
1037-
time_t startupTime;
1037+
AtomicValue<time_t> startupTime;
10381038
EpEngineTaskable taskable;
10391039
};
10401040

0 commit comments

Comments
 (0)