Details
-
Bug
-
Resolution: Fixed
-
Major
-
3.1.4
-
Untriaged
-
Unknown
Description
As detected by threadsanitizer; there is a race on TapThrottle::queueCap. The detected usage is just in stats, however there is an indirect usage of this variable (persistenceQueueSmallEnough, via stats.replicationThrottleWriteQueueCap) which could result in an incorrect queue size being used.
WARNING: ThreadSanitizer: data race (pid=4196)
|
Read of size 8 at 0x7d0800005400 by thread T10:
|
#0 TapThrottle::adjustWriteQueueCap(unsigned long) /home/daver/repos/couchbase/server/ep-engine/src/tapthrottle.cc:49 (ep.so+0x0000002517b5)
|
#1 EventuallyPersistentEngine::doEngineStats(void const*, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) /home/daver/repos/couchbase/server/ep-engine/src/ep_engine.cc:2953 (ep.so+0x0000001428d5)
|
#2 EventuallyPersistentEngine::getStats(void const*, char const*, int, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) /home/daver/repos/couchbase/server/ep-engine/src/ep_engine.cc:4349 (ep.so+0x00000015080a)
|
#3 EventuallyPersistentStore::snapshotStats() /home/daver/repos/couchbase/server/ep-engine/src/ep.cc:1358 (ep.so+0x0000000e0f9e)
|
#4 StatSnap::run() /home/daver/repos/couchbase/server/ep-engine/src/tasks.cc:80 (ep.so+0x0000002528c3)
|
#5 ExecutorThread::run() /home/daver/repos/couchbase/server/ep-engine/src/executorthread.cc:109 (ep.so+0x0000001e329f)
|
#6 launch_executor_thread(void*) /home/daver/repos/couchbase/server/ep-engine/src/executorthread.cc:34 (ep.so+0x0000001e28aa)
|
#7 platform_thread_wrap /home/daver/repos/couchbase/server/platform/src/cb_pthreads.c:19 (libplatform.so.0.1.0+0x0000000035dc)
|
|
Previous write of size 8 at 0x7d0800005400 by main thread (mutexes: write M739290916774260632):
|
#0 TapThrottle::setQueueCap(long) /home/daver/repos/couchbase/server/ep-engine/src/tapthrottle.h:43 (ep.so+0x000000133967)
|
#1 EPStoreValueChangeListener::sizeValueChanged(std::string const&, unsigned long) /home/daver/repos/couchbase/server/ep-engine/src/ep.cc:115 (ep.so+0x000000133570)
|
#2 Configuration::setParameter(std::string const&, long) /home/daver/repos/couchbase/server/ep-engine/src/configuration.cc:210 (ep.so+0x000000356ac1)
|
#3 Configuration::setTapThrottleQueueCap(long const&) /home/daver/repos/couchbase/server/build-tsan/ep-engine/src/generated_configuration.cc:387 (ep.so+0x000000370c9b)
|
#4 setTapParam(EventuallyPersistentEngine*, char const*, char const*, char const**, unsigned long*) /home/daver/repos/couchbase/server/ep-engine/src/ep_engine.cc:319 (ep.so+0x00000016c8cf)
|
#5 setParam(EventuallyPersistentEngine*, protocol_binary_request_set_param*, char const**, unsigned long*) /home/daver/repos/couchbase/server/ep-engine/src/ep_engine.cc:752 (ep.so+0x0000001678c5)
|
#6 processUnknownCommand(EventuallyPersistentEngine*, void const*, protocol_binary_request_header*, bool (*)(void const*, unsigned short, void const*, unsigned char, void const*, unsigned int, unsigned char, unsigned short, unsigned long, void const*)) /home/daver/repos/couchbase/server/ep-engine/src/ep_engine.cc:1136 (ep.so+0x000000163dbd)
|
#7 EvpUnknownCommand(engine_interface*, void const*, protocol_binary_request_header*, bool (*)(void const*, unsigned short, void const*, unsigned char, void const*, unsigned int, unsigned char, unsigned short, unsigned long, void const*)) /home/daver/repos/couchbase/server/ep-engine/src/ep_engine.cc:1312 (ep.so+0x000000137765)
|
#8 mock_unknown_command /home/daver/repos/couchbase/server/memcached/programs/engine_testapp/engine_testapp.c:335 (engine_testapp+0x0000004be97a)
|
#9 set_param(engine_interface*, engine_interface_v1*, protocol_binary_engine_param_t, char const*, char const*) /home/daver/repos/couchbase/server/ep-engine/tests/ep_test_apis.cc:469 (ep_testsuite.so+0x0000000e6641)
|
#10 test_consumer_backoff_stat(engine_interface*, engine_interface_v1*) /home/daver/repos/couchbase/server/ep-engine/tests/ep_testsuite.cc:4334 (ep_testsuite.so+0x000000096d98)
|
#11 execute_test /home/daver/repos/couchbase/server/memcached/programs/engine_testapp/engine_testapp.c:1042 (engine_testapp+0x0000004ba8ff)
|
#12 main /home/daver/repos/couchbase/server/memcached/programs/engine_testapp/engine_testapp.c:1296 (engine_testapp+0x0000004b8861)
|
Note: already fixed in watson: http://review.couchbase.org/59215
Attachments
Issue Links
- blocks
-
MB-19323 3.1.6 release
- Closed