{"push_id":1179236333,"size":13,"distinct_size":2,"ref":"refs/heads/sherlock","head":"002f68f2a048dfbce4d1a573ad71d3810773ee47","before":"1ab821b77eca99f39d0ddef5e8b6087adadff92f","commits":[{"sha":"3da172a6e015368b58c6270a02e51e8de5a9e903","author":{"name":"abhinavdangeti","email":"a122d0c4eebafc5771acbdb09f67bbabea75a8bd@couchbase.com"},"message":"MB-19256: Address possible data race on VBCBAdaptor::currentvb\n\nWARNING: ThreadSanitizer: data race (pid=12312)\n\nRead of size 2 at 0x7d400000fff8 by main thread (mutexes: write M12542):\n    #0 VBCBAdaptor::getDescription() /home/abhinav/couchbase/ep-engine/src/ep.h:128 (ep.so+0x0000000a7fe1)\n    #1 ExecutorPool::_stopTaskGroup(unsigned long, task_type_t, bool) /home/abhinav/couchbase/ep-engine/src/executorpool.cc:562 (ep.so+0x0000000f3c21)\n    #2 ExecutorPool::stopTaskGroup(unsigned long, task_type_t, bool) /home/abhinav/couchbase/ep-engine/src/executorpool.cc:585 (ep.so+0x0000000f3f5e)\n    #3 ~EventuallyPersistentStore /home/abhinav/couchbase/ep-engine/src/ep.cc:468 (ep.so+0x0000000836c6)\n    #4 ~EventuallyPersistentEngine /home/abhinav/couchbase/ep-engine/src/ep_engine.cc:6326 (ep.so+0x0000000d4eda)\n    #5 EvpDestroy(engine_interface*, bool) /home/abhinav/couchbase/ep-engine/src/ep_engine.cc:141 (ep.so+0x0000000b4b8c)\n    #6 mock_destroy(engine_interface*, bool) /home/abhinav/couchbase/memcached/programs/engine_testapp/engine_testapp.cc:98 (engine_testapp+0x0000000ba027)\n    #7 destroy_bucket(engine_interface*, engine_interface_v1*, bool) /home/abhinav/couchbase/memcached/programs/engine_testapp/engine_testapp.cc:995 (engine_testapp+0x0000000b952e)\n    #8 __libc_start_main /build/buildd/eglibc-2.19/csu/libc-start.c:287 (libc.so.6+0x000000021ec4)\n\nPrevious write of size 2 at 0x7d400000fff8 by thread T10:\n    #0 VBCBAdaptor::run() /home/abhinav/couchbase/ep-engine/src/ep.cc:3776 (ep.so+0x00000009d7e3)\n    #1 ExecutorThread::run() /home/abhinav/couchbase/ep-engine/src/executorthread.cc:112 (ep.so+0x0000000f94d3)\n    #2 launch_executor_thread(void*) /home/abhinav/couchbase/ep-engine/src/executorthread.cc:33 (ep.so+0x0000000f9055)\n    #3 platform_thread_wrap /home/abhinav/couchbase/platform/src/cb_pthreads.c:23 (libplatform.so.0.1.0+0x000000003d31)\n\nChange-Id: I316fb1a845fbee09f634d39e64057c170fab4795\nReviewed-on: http://review.couchbase.org/62974\nWell-Formed: buildbot <build@couchbase.com>\nReviewed-by: Will Gardner <will.gardner@couchbase.com>\nTested-by: buildbot <build@couchbase.com>","distinct":false,"url":"https://api.github.com/repos/membase/ep-engine/commits/3da172a6e015368b58c6270a02e51e8de5a9e903"},{"sha":"4bc74ba88f412cc54f45ec7b1a2cb07e095fdea1","author":{"name":"Dave Rigby","email":"f1dabaf34419d2352350e740ada40ded900019c4@couchbase.com"},"message":"MB-19257: Fix data race on ExecutorThread::now\n\nThis value is accessed without a lock from addWorkerStats. Change to\natomic to fix race.\n\nAs reported by ThreadSanitizer:\n\nWARNING: ThreadSanitizer: data race (pid=18761)\n  Read of size 8 at 0x7d4400007fa8 by main thread (mutexes: write M19371):\n    #0 ExecutorThread::getCurTime() /home/couchbase/server/ep-engine/src/executorthread.h:129:46 (ep.so+0x0000000e67a0)\n    #1 addWorkerStats(char const*, ExecutorThread*, void const*, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) /home/couchbase/server/ep-engine/src/executorpool.cc:748 (ep.so+0x0000000e67a0)\n    #2 ExecutorPool::doWorkerStat(EventuallyPersistentEngine*, void const*, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) /home/couchbase/server/ep-engine/src/executorpool.cc:760 (ep.so+0x0000000e67a0)\n    #3 EventuallyPersistentEngine::doDispatcherStats(void const*, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) /home/couchbase/server/ep-engine/src/ep_engine.cc:4352:5 (ep.so+0x0000000bc72d)\n    #4 EventuallyPersistentEngine::getStats(void const*, char const*, int, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) /home/couchbase/server/ep-engine/src/ep_engine.cc:4588 (ep.so+0x0000000bc72d)\n    #5 EvpGetStats(engine_interface*, void const*, char const*, int, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) /home/couchbase/server/ep-engine/src/ep_engine.cc:214:38 (ep.so+0x0000000ab70e)\n    #6 mock_get_stats(engine_interface*, void const*, char const*, int, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) /home/couchbase/server/memcached/programs/engine_testapp/engine_testapp.cc:239:19 (engine_testapp+0x0000004c553d)\n    #7 test_worker_stats(engine_interface*, engine_interface_v1*) /home/couchbase/server/ep-engine/tests/ep_testsuite.cc:8901:24 (ep_testsuite.so+0x000000039908)\n    #8 execute_test(test, char const*, char const*) /home/couchbase/server/memcached/programs/engine_testapp/engine_testapp.cc:1090:19 (engine_testapp+0x0000004c4142)\n    #9 main /home/couchbase/server/memcached/programs/engine_testapp/engine_testapp.cc:1439 (engine_testapp+0x0000004c4142)\n\n  Previous write of size 8 at 0x7d4400007fa8 by thread T7 (mutexes: write M12645):\n    #0 TaskQueue::_doSleep(ExecutorThread&) /home/couchbase/server/ep-engine/src/taskqueue.cc:78:5 (ep.so+0x00000012eb21)\n    #1 TaskQueue::_fetchNextTask(ExecutorThread&, bool) /home/couchbase/server/ep-engine/src/taskqueue.cc:117:21 (ep.so+0x00000012ed66)\n    #2 TaskQueue::fetchNextTask(ExecutorThread&, bool) /home/couchbase/server/ep-engine/src/taskqueue.cc:160:17 (ep.so+0x00000012f907)\n    #3 ExecutorPool::_nextTask(ExecutorThread&, unsigned char) /home/couchbase/server/ep-engine/src/executorpool.cc:226:17 (ep.so+0x0000000dfa6f)\n    #4 ExecutorPool::nextTask(ExecutorThread&, unsigned char) /home/couchbase/server/ep-engine/src/executorpool.cc:241:21 (ep.so+0x0000000dfac6)\n    #5 ExecutorThread::run() /home/couchbase/server/ep-engine/src/executorthread.cc:81:28 (ep.so+0x0000000e9cfe)\n    #6 launch_executor_thread(void*) /home/couchbase/server/ep-engine/src/executorthread.cc:33:9 (ep.so+0x0000000e9b05)\n    #7 platform_thread_wrap /home/couchbase/server/platform/src/cb_pthreads.c:23:5 (libplatform.so.0.1.0+0x000000003dc1)\n\nChange-Id: Idcaea9a157293dbf95ca236354673556a2f3c4ac\nReviewed-on: http://review.couchbase.org/62975\nWell-Formed: buildbot <build@couchbase.com>\nReviewed-by: Jim Walker <jim@couchbase.com>\nReviewed-by: Will Gardner <will.gardner@couchbase.com>\nTested-by: buildbot <build@couchbase.com>","distinct":false,"url":"https://api.github.com/repos/membase/ep-engine/commits/4bc74ba88f412cc54f45ec7b1a2cb07e095fdea1"},{"sha":"aec8019f0af7a1f7e4e7a6e40f1ba5af63a94574","author":{"name":"Dave Rigby","email":"f1dabaf34419d2352350e740ada40ded900019c4@couchbase.com"},"message":"MB-19281: [BP] Add template class RelaxedAtomic<>\n\nBackport of the RelaxedAtomic template class from\nplatform/watson. Changed from C++11 std::atomic<> to our own\nAtomicValue<> as 3.x doesn't have C++11 support on all platforms, and\nmoved to ep-engine as AtomicValue is an ep-engine specific class.\n\nDoesn't include unit tests as they depend on GTest which isn't present\nin 3.0.x.\n\nMerge of the following platform commits:\n\n* http://review.couchbase.org/54973 - Add template class RelaxedAtomic<>\n* http://review.couchbase.org/55870 - RelaxedAtomic: Allow construction from template type\n* http://review.couchbase.org/55889 - RelaxedAtomic: Remove 'explicit' definition for copy constructor\n\nChange-Id: I16a5e2ebe85201aae85592329a2212c8a5c3a464\nReviewed-on: http://review.couchbase.org/63169\nReviewed-by: Trond Norbye <trond.norbye@gmail.com>\nWell-Formed: buildbot <build@couchbase.com>\nReviewed-by: Will Gardner <will.gardner@couchbase.com>\nTested-by: buildbot <build@couchbase.com>","distinct":false,"url":"https://api.github.com/repos/membase/ep-engine/commits/aec8019f0af7a1f7e4e7a6e40f1ba5af63a94574"},{"sha":"47e799ec1904d17a0bcd57d26db12dd55b9cbfdd","author":{"name":"abhinavdangeti","email":"a122d0c4eebafc5771acbdb09f67bbabea75a8bd@couchbase.com"},"message":"MB-19258: Address data race with replicationThrottle parameters\n\nThe detected usage is just in stats, however there is an indirect\nusage of this variable (persistenceQueueSmallEnough, via\nstats.replicationThrottleWriteQueueCap) which /might/ result in an\nincorrect queue size being used.\n\nWARNING: ThreadSanitizer: data race (pid=31345)\n  Read of size 8 at 0x7d08000066c0 by thread T12:\n    #0 ReplicationThrottle::adjustWriteQueueCap(unsigned long) ep-engine/src/replicationthrottle.cc:49 (ep.so+0x000000114c7f)\n    #1 EventuallyPersistentEngine::doEngineStats(void const*, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) ep-engine/src/ep_engine.cc:3100 (ep.so+0x0000000bb424)\n    #2 EventuallyPersistentEngine::getStats(void const*, char const*, int, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) ep-engine/src/ep_engine.cc:4597 (ep.so+0x0000000c54d5)\n    #3 EventuallyPersistentStore::snapshotStats() ep-engine/src/ep.cc:1744 (ep.so+0x000000090f2e)\n    #4 StatSnap::run() ep-engine/src/tasks.cc:100 (ep.so+0x000000136dd6)\n    #5 ExecutorThread::run() ep-engine/src/executorthread.cc:115 (ep.so+0x0000000f6966)\n    #6 launch_executor_thread(void*) ep-engine/src/executorthread.cc:33 (ep.so+0x0000000f6515)\n    #7 platform_thread_wrap(void*) platform/src/cb_pthreads.cc:54 (libplatform.so.0.1.0+0x00000000551b)\n12:23:35\n  Previous write of size 8 at 0x7d08000066c0 by main thread (mutexes: write M2287262534014660504):\n    #0 EPStoreValueChangeListener::sizeValueChanged(std::string const&, unsigned long) ep-engine/src/replicationthrottle.h:42 (ep.so+0x0000000b35ee)\n    #1 Configuration::setParameter(std::string const&, long) ep-engine/src/configuration.cc:225 (ep.so+0x000000197ac5)\n    #2 Configuration::setReplicationThrottleQueueCap(long const&) build/ep-engine/src/generated_configuration.cc:459 (ep.so+0x0000001a6fa8)\n    #3 setTapParam(EventuallyPersistentEngine*, char const*, char const*, std::string&) ep-engine/src/ep_engine.cc:323 (ep.so+0x0000000d7f3f)\n    #4 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*)) ep-engine/src/ep_engine.cc:1365 (ep.so+0x0000000b4f68)\n    #5 mock_unknown_command(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*)) memcached/programs/engine_testapp/engine_testapp.cc:382 (engine_testapp+0x0000004ce149)\n    #6 set_param(engine_interface*, engine_interface_v1*, protocol_binary_engine_param_t, char const*, char const*) ep-engine/tests/ep_test_apis.cc:597 (ep_testsuite_dcp.so+0x000000038e17)\n    #7 test_consumer_backoff_stat(engine_interface*, engine_interface_v1*) ep-engine/tests/ep_testsuite_dcp.cc:2184 (ep_testsuite_dcp.so+0x000000017411)\n    #8 execute_test(test, char const*, char const*) memcached/programs/engine_testapp/engine_testapp.cc:1131 (engine_testapp+0x0000004cc600)\n    #9 __libc_start_main /build/buildd/eglibc-2.15/csu/libc-start.c:226 (libc.so.6+0x00000002176c)\n\nChange-Id: Ie4ff039603f2ddfc5b44d5d7f217544307655d31\nReviewed-on: http://review.couchbase.org/62976\nWell-Formed: buildbot <build@couchbase.com>\nReviewed-by: Will Gardner <will.gardner@couchbase.com>\nTested-by: buildbot <build@couchbase.com>","distinct":false,"url":"https://api.github.com/repos/membase/ep-engine/commits/47e799ec1904d17a0bcd57d26db12dd55b9cbfdd"},{"sha":"7a47e23cfbe552dba767f76420ca9bfda96d0fde","author":{"name":"Dave Rigby","email":"f1dabaf34419d2352350e740ada40ded900019c4@couchbase.com"},"message":"MB-19259: Fix data race on DcpConsumer::backoffs\n\nThis member is read by stats processing concurrently with DcpConsumer\nupdating it. Change to RelaxedAtomic<>\n\nAs reported by ThreadSanitizer:\n\nWARNING: ThreadSanitizer: data race (pid=24629)\n  Read of size 4 at 0x7d5000016b9c by main thread (mutexes: write M27034, write M2479):\n    #0 void ConnHandler::addStat<unsigned int>(), void const*) ep-engine/src/tapconnection.h:291:18 (ep.so+0x00000004e993)\n    #1 DcpConsumer::addStats(), void const*) ep-engine/src/dcp/consumer.cc:731:5 (ep.so+0x00000005a2c3)\n    ...\n\n  Previous write of size 4 at 0x7d5000016b9c by thread T10:\n    #0 DcpConsumer::processBufferedItems() ep-engine/src/dcp/consumer.cc:755:17 (ep.so+0x0000000539c3)\n    #1 Processer::run() ep-engine/src/dcp/consumer.cc:57:13 (ep.so+0x00000005376b)\n    #2 ExecutorThread::run() ep-engine/src/executorthread.cc:115:26 (ep.so+0x0000000e944e)\n    ...\n\nChange-Id: Iabddcc06213fbb80815d4b464c459adb922a0eff\nReviewed-on: http://review.couchbase.org/62977\nWell-Formed: buildbot <build@couchbase.com>\nReviewed-by: Jim Walker <jim@couchbase.com>\nReviewed-by: Will Gardner <will.gardner@couchbase.com>\nTested-by: buildbot <build@couchbase.com>","distinct":false,"url":"https://api.github.com/repos/membase/ep-engine/commits/7a47e23cfbe552dba767f76420ca9bfda96d0fde"},{"sha":"60bbbee15c9e43081343c1865030a699ae339992","author":{"name":"abhinavdangeti","email":"a122d0c4eebafc5771acbdb09f67bbabea75a8bd@couchbase.com"},"message":"MB-19260: Make cookie atomic to serialize set/get in ConnHandler\n\nWARNING: ThreadSanitizer: data race (pid=20056)\n\n  Write of size 8 at 0x7d600000f038 by main thread (mutexes: write M1412):\n    #0 ConnHandler::setCookie(void const*) /home/abhinav/couchbase/ep-engine/src/tapconnection.h:344 (ep.so+0x000000042367)\n    #1 EventuallyPersistentEngine::createTapQueue(void const*, std::string&, unsigned int, void const*, unsigned long) /home/abhinav/couchbase/ep-engine/src/ep_engine.cc:2655 (ep.so+0x0000000b86da)\n    #2 EvpGetTapIterator(engine_interface*, void const*, void const*, unsigned long, unsigned int, void const*, unsigned long) /home/abhinav/couchbase/ep-engine/src/ep_engine.cc:1462 (ep.so+0x0000000b46a3)\n    #3 mock_get_tap_iterator(engine_interface*, void const*, void const*, unsigned long, unsigned int, void const*, unsigned long) /home/abhinav/couchbase/memcached/programs/engine_testapp/engine_testapp.cc:467 (engine_testapp+0x0000000bae3e)\n    #4 test_tap_ack_stream(engine_interface*, engine_interface_v1*) /home/abhinav/couchbase/ep-engine/tests/ep_testsuite.cc:7341 (ep_testsuite.so+0x000000050416)\n    #5 execute_test(test, char const*, char const*) /home/abhinav/couchbase/memcached/programs/engine_testapp/engine_testapp.cc:1090 (engine_testapp+0x0000000b946c)\n    #6 __libc_start_main /build/buildd/eglibc-2.19/csu/libc-start.c:287 (libc.so.6+0x000000021ec4)\n\n  Previous read of size 8 at 0x7d600000f038 by thread T9 (mutexes: write M1411):\n    #0 ConnHandler::getCookie() const /home/abhinav/couchbase/ep-engine/src/tapconnection.h:340 (ep.so+0x00000004067c)\n    #1 bool TapConnMap::performOp<Item*>(std::string const&, TapOperation<Item*>&, Item*) /home/abhinav/couchbase/ep-engine/src/connmap.h:389 (ep.so+0x00000001fa08)\n    #2 ItemResidentCallback::callback(CacheLookup&) /home/abhinav/couchbase/ep-engine/src/backfill.cc:63 (ep.so+0x00000001d9ca)\n    #3 CouchKVStore::recordDbDump(_db*, _docinfo*, void*) /home/abhinav/couchbase/ep-engine/src/couch-kvstore/couch-kvstore.cc:1654 (ep.so+0x000000180ca0)\n    #4 recordDbDumpC(_db*, _docinfo*, void*) /home/abhinav/couchbase/ep-engine/src/couch-kvstore/couch-kvstore.cc:66 (ep.so+0x00000017fe95)\n    #5 lookup_callback(couchfile_lookup_request*, _sized_buf const*, _sized_buf const*) /home/abhinav/couchbase/couchstore/src/couch_db.cc:767 (libcouchstore.so+0x00000000d7e5)\n    #6 btree_lookup_inner(couchfile_lookup_request*, unsigned long, int, int) /home/abhinav/couchbase/couchstore/src/btree_read.cc:99 (libcouchstore.so+0x00000000b5a2)\n    #7 btree_lookup /home/abhinav/couchbase/couchstore/src/btree_read.cc:131 (libcouchstore.so+0x00000000affc)\n    #8 couchstore_changes_since /home/abhinav/couchbase/couchstore/src/couch_db.cc:812 (libcouchstore.so+0x00000000d5f1)\n    #9 CouchKVStore::scan(ScanContext*) /home/abhinav/couchbase/ep-engine/src/couch-kvstore/couch-kvstore.cc:1264 (ep.so+0x00000017f94e)\n    #10 BackfillDiskLoad::run() /home/abhinav/couchbase/ep-engine/src/backfill.cc:131 (ep.so+0x00000001e449)\n    #11 ExecutorThread::run() /home/abhinav/couchbase/ep-engine/src/executorthread.cc:112 (ep.so+0x0000000f8956)\n    #12 launch_executor_thread(void*) /home/abhinav/couchbase/ep-engine/src/executorthread.cc:33 (ep.so+0x0000000f84f5)\n    #13 platform_thread_wrap /home/abhinav/couchbase/platform/src/cb_pthreads.c:23 (libplatform.so.0.1.0+0x000000003d31)\n\nChange-Id: I8a668f17013c95abc9786d853ed2c6462cae5320\nReviewed-on: http://review.couchbase.org/62978\nWell-Formed: buildbot <build@couchbase.com>\nReviewed-by: Will Gardner <will.gardner@couchbase.com>\nTested-by: buildbot <build@couchbase.com>","distinct":false,"url":"https://api.github.com/repos/membase/ep-engine/commits/60bbbee15c9e43081343c1865030a699ae339992"},{"sha":"78f946d67c577f1eb3d1a1824650f4167364c783","author":{"name":"Dave Rigby","email":"f1dabaf34419d2352350e740ada40ded900019c4@couchbase.com"},"message":"MB-19273: Fix data race on PassiveStream::buffer.{bytes,items}\n\nAs reported by ThreadSanitizer (see below), there is a dirty read on\n{{buffer.items}} & {{buffer.bytes}} during stat writing, due to\nPassiveStream::addStats not acquiring the {{bufMutex}} lock before\nreading.\n\nThis appears benign as the stat is only user sent to users, not used\nby ns_server etc for any calculation.\n\nWARNING: ThreadSanitizer: data race (pid=28418)\n  Read of size 8 at 0x7d5000018128 by main thread (mutexes: write M23810, write M969):\n    #0 void STATWRITER_NAMESPACE::add_casted_stat<unsigned long>(char const*, unsigned long const&, void (*)(char const*, unsigned short, char const*, unsigned int, void const*), void const*) ep-engine/src/statwriter.h:47 (ep.so+0x0000000afe89)\n    #1 PassiveStream::addStats(void (*)(char const*, unsigned short, char const*, unsigned int, void const*), void const*) ep-engine/src/dcp-stream.cc:1512 (ep.so+0x0000002a04ba)\n    #2 DcpConsumer::addStats(void (*)(char const*, unsigned short, char const*, unsigned int, void const*), void const*) ep-engine/src/dcp-consumer.cc:555 (ep.so+0x00000026e867)\n\n  Previous write of size 8 at 0x7d5000018128 by thread T18 (mutexes: write M23762):\n    #0 PassiveStream::processBufferedMessages(unsigned int&) ep-engine/src/dcp-stream.cc:1311 (ep.so+0x00000029e196)\n    #1 DcpConsumer::processBufferedItems() ep-engine/src/dcp-consumer.cc:599 (ep.so+0x0000002647e9)\n    #2 Processer::run() ep-engine/src/dcp-consumer.cc:48 (ep.so+0x0000002643ef)\n\nChange-Id: I443e85d59ffda3827b670e747794b3fcb69c4f7c\nReviewed-on: http://review.couchbase.org/63026\nWell-Formed: buildbot <build@couchbase.com>\nReviewed-by: Will Gardner <will.gardner@couchbase.com>\nTested-by: buildbot <build@couchbase.com>","distinct":false,"url":"https://api.github.com/repos/membase/ep-engine/commits/78f946d67c577f1eb3d1a1824650f4167364c783"},{"sha":"ac9a4372dd264770d5954f10abd259ce5f14dca3","author":{"name":"abhinavdangeti","email":"a122d0c4eebafc5771acbdb09f67bbabea75a8bd@couchbase.com"},"message":"MB-19275: Address data race on a DCP stream's state\n\nWARNING: ThreadSanitizer: data race (pid=139161)\n  Read of size 4 at 0x7d480000b150 by thread T31 (mutexes: write M51120):\n    #0 DCPBackfill::scan() ep-engine/src/dcp/stream.h:126 (ep.so+0x000000053391)\n    #1 DCPBackfill::run() ep-engine/src/dcp/backfill.cc:118 (ep.so+0x000000052737)\n    #2 BackfillManager::backfill() ep-engine/src/dcp/backfill-manager.cc:240 (ep.so+0x00000004cf65)\n    #3 BackfillManagerTask::run() ep-engine/src/dcp/backfill-manager.cc:43 (ep.so+0x00000004cb8f)\n    #4 ExecutorThread::run() ep-engine/src/executorthread.cc:115 (ep.so+0x0000000eb94d)\n    #5 launch_executor_thread(void*) ep-engine/src/executorthread.cc:33 (ep.so+0x0000000eb515)\n    #6 platform_thread_wrap(void*) platform/src/cb_pthreads.cc:53 (libplatform.so.0.1.0+0x0000000048ab)\n\n  Previous write of size 4 at 0x7d480000b150 by main thread (mutexes: write M1241, write M32448, write M51071, write M51087):\n    #0 ActiveStream::transitionState(stream_state_t) ep-engine/src/dcp/stream.cc:829 (ep.so+0x00000006accb)\n    #1 ActiveStream::endStream(end_stream_status_t) ep-engine/src/dcp/stream.cc:688 (ep.so+0x00000006a8c2)\n    #2 ActiveStream::setDead(end_stream_status_t) ep-engine/src/dcp/stream.cc:654 (ep.so+0x00000006f27b)\n    #3 DcpProducer::setDisconnect(bool) ep-engine/src/dcp/producer.cc:835 (ep.so+0x000000065605)\n    #4 DcpConnMap::disconnect_UNLOCKED(void const*) ep-engine/src/connmap.cc:1116 (ep.so+0x000000045d6c)\n    #5 DcpConnMap::disconnect(void const*) ep-engine/src/connmap.cc:1109 (ep.so+0x000000045c8b)\n    #6 EventuallyPersistentEngine::handleDisconnect(void const*) ep-engine/src/ep_engine.cc:6265 (ep.so+0x0000000ca38a)\n    #7 EvpHandleDisconnect(void const*, ENGINE_EVENT_TYPE, void const*, void const*) ep-engine/src/ep_engine.cc:1802 (ep.so+0x0000000af976)\n    #8 destroy_mock_cookie memcached/programs/engine_testapp/mock_server.cc:325 (engine_testapp+0x0000004f4082)\n    #9 dcp_stream_req(engine_interface*, engine_interface_v1*, unsigned int, unsigned short, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, ENGINE_ERROR_CODE) ep-engine/tests/ep_testsuite.cc:4331 (ep_testsuite.so+0x000000090b06)\n    #10 test_failover_log_dcp(engine_interface*, engine_interface_v1*) ep-engine/tests/ep_testsuite.cc:14127 (ep_testsuite.so+0x00000007ce7a)\n    #11 execute_test(test, char const*, char const*) memcached/programs/engine_testapp/engine_testapp.cc:1091 (engine_testapp+0x0000004cb315)\n    #12 __libc_start_main /build/buildd/eglibc-2.15/csu/libc-start.c:226 (libc.so.6+0x00000002176c)\n\nChange-Id: Icfc82fa877999d128184c9cac8f8c0e1cafc4e67\nReviewed-on: http://review.couchbase.org/63027\nWell-Formed: buildbot <build@couchbase.com>\nReviewed-by: Will Gardner <will.gardner@couchbase.com>\nTested-by: buildbot <build@couchbase.com>","distinct":false,"url":"https://api.github.com/repos/membase/ep-engine/commits/ac9a4372dd264770d5954f10abd259ce5f14dca3"},{"sha":"1d61bf30416aa98b6bd742ac8b104d3782a4063a","author":{"name":"abhinavdangeti","email":"a122d0c4eebafc5771acbdb09f67bbabea75a8bd@couchbase.com"},"message":"MB-19276: Fix data race on ExecutorThread::taskStart\n\nWARNING: ThreadSanitizer: data race (pid=236996)\n  Write of size 8 at 0x7d380000dbd8 by thread T5:\n    #0 ExecutorThread::run() ep-engine/src/executorthread.cc:105 (ep.so+0x0000000ee0cc)\n    #1 launch_executor_thread(void*) ep-engine/src/executorthread.cc:33 (ep.so+0x0000000edd75)\n    #2 platform_thread_wrap(void*) platform/src/cb_pthreads.cc:54 (libplatform.so.0.1.0+0x000000004e7b)\n\n  Previous read of size 8 at 0x7d380000dbd8 by main thread (mutexes: write M266835151185571736):\n    #0 addWorkerStats(char const*, ExecutorThread*, void const*, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) ep-engine/src/executorthread.h:108 (ep.so+0x0000000ea8dc)\n    #1 EventuallyPersistentEngine::getStats(void const*, char const*, int, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) ep-engine/src/ep_engine.cc:4363 (ep.so+0x0000000c05dd)\n    #2 EvpGetStats(engine_interface*, void const*, char const*, int, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) ep-engine/src/ep_engine.cc:219 (ep.so+0x0000000af40e)\n    #3 mock_get_stats(engine_interface*, void const*, char const*, int, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) memcached/programs/engine_testapp/engine_testapp.cc:240 (engine_testapp+0x0000004cc71d)\n    #4 test_worker_stats(engine_interface*, engine_interface_v1*) ep-engine/tests/ep_testsuite.cc:9464 (ep_testsuite.so+0x00000003c038)\n    #5 execute_test(test, char const*, char const*) memcached/programs/engine_testapp/engine_testapp.cc:1091 (engine_testapp+0x0000004cb315)\n    #6 __libc_start_main /build/buildd/eglibc-2.15/csu/libc-start.c:226 (libc.so.6+0x00000002176c)\n\nChange-Id: If01aba3cf6b3591f19c5bb62119e40998f12c8ff\nReviewed-on: http://review.couchbase.org/63028\nWell-Formed: buildbot <build@couchbase.com>\nReviewed-by: Jim Walker <jim@couchbase.com>\nReviewed-by: Will Gardner <will.gardner@couchbase.com>\nTested-by: buildbot <build@couchbase.com>","distinct":false,"url":"https://api.github.com/repos/membase/ep-engine/commits/1d61bf30416aa98b6bd742ac8b104d3782a4063a"},{"sha":"6387cef83f3d23c659f5934e243705d55ba70aae","author":{"name":"abhinavdangeti","email":"a122d0c4eebafc5771acbdb09f67bbabea75a8bd@couchbase.com"},"message":"MB-19277: Set executorThread's waketime to atomic\n\nThis one looks benign - we only perform the dirty read when\ncalculating the %s:waketime stat which is not used by anyone apart\nfrom end-users.\n\nWARNING: ThreadSanitizer: data race (pid=41666)\n  Read of size 8 at 0x7d4400008370 by main thread (mutexes: write M21616):\n    #0 ExecutorThread::getWaketime() ep-engine/src/executorthread.h:120 (ep.so+0x0000001cac0e)\n    #1 addWorkerStats(char const*, ExecutorThread*, void const*, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) ep-engine/src/executorpool.cc:692 (ep.so+0x0000001b6f06)\n    #2 ExecutorPool::doWorkerStat(EventuallyPersistentEngine*, void const*, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) ep-engine/src/executorpool.cc:706 (ep.so+0x0000001b6734)\n    #3 EventuallyPersistentEngine::doDispatcherStats(void const*, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) ep-engine/src/ep_engine.cc:4139 (ep.so+0x00000015223e)\n    #4 EventuallyPersistentEngine::getStats(void const*, char const*, int, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) ep-engine/src/ep_engine.cc:4375 (ep.so+0x000000155336)\n\n  Previous write of size 8 at 0x7d4400008370 by thread T6 (mutexes: write M14985):\n    #0 TaskQueue::_fetchNextTask(ExecutorThread&, bool) ep-engine/src/taskqueue.cc:125 (ep.so+0x00000025b3fd)\n    #1 TaskQueue::fetchNextTask(ExecutorThread&, bool) ep-engine/src/taskqueue.cc:161 (ep.so+0x00000025bfcf)\n    #2 ExecutorPool::_nextTask(ExecutorThread&, unsigned char) ep-engine/src/executorpool.cc:217 (ep.so+0x0000001afc67)\n    #3 ExecutorPool::nextTask(ExecutorThread&, unsigned char) ep-engine/src/executorpool.cc:232 (ep.so+0x0000001afe3f)\n    #4 ExecutorThread::run() ep-engine/src/executorthread.cc:81 (ep.so+0x0000001e85c9)\n\nChange-Id: I34b12681dd9dfc87c889f301692ca714f04d2a82\nReviewed-on: http://review.couchbase.org/63029\nWell-Formed: buildbot <build@couchbase.com>\nReviewed-by: Jim Walker <jim@couchbase.com>\nReviewed-by: Will Gardner <will.gardner@couchbase.com>\nTested-by: buildbot <build@couchbase.com>","distinct":false,"url":"https://api.github.com/repos/membase/ep-engine/commits/6387cef83f3d23c659f5934e243705d55ba70aae"},{"sha":"a430629f25cff1bd01f1a0ed7007ba694769f1fd","author":{"name":"Dave Rigby","email":"f1dabaf34419d2352350e740ada40ded900019c4@couchbase.com"},"message":"MB-19278: Fix lock-order inversion on ActiveStream::streamMutex\n\nThreadSanitizer has identified a potential deadlock due to a cycle in\n  the lock order graph: Cycle in lock order graph:\n\n    M43515         => M36787      => M36848            => M43515\n   [ActiveStream::   [TaskQueue::   [ExecutorThread::    [ActiveStream::\n    streamMutex]      mutex]         currentTaskMutex]    streamMutex]\n\nThe crux of the problem appears to be the acquisition of streamMutex\nin the destructor of ActiveStream. This is ultimately a Bad Idea - if\nyou still have multiple threads accessing an object when it's been\ndeleted then you are already into undefined behaviour.\n\nChange-Id: I2353b5a8ed93a4f9e8cc036cb85680c185cbcc2f\nReviewed-on: http://review.couchbase.org/63033\nWell-Formed: buildbot <build@couchbase.com>\nReviewed-by: Daniel Owen <owend@couchbase.com>\nTested-by: buildbot <build@couchbase.com>","distinct":false,"url":"https://api.github.com/repos/membase/ep-engine/commits/a430629f25cff1bd01f1a0ed7007ba694769f1fd"},{"sha":"24fbb82abdb1d78b71dde958ec676a38147cafcc","author":{"name":"Dave Rigby","email":"f1dabaf34419d2352350e740ada40ded900019c4@couchbase.com"},"message":"Merge remote-tracking branch 'couchbase/3.0.x' into sherlock\n\n* commit 'a430629':\n  MB-19278: Fix lock-order inversion on ActiveStream::streamMutex\n  MB-19277: Set executorThread's waketime to atomic\n  MB-19276: Fix data race on ExecutorThread::taskStart\n  MB-19275: Address data race on a DCP stream's state\n  MB-19273: Fix data race on PassiveStream::buffer.{bytes,items}\n  MB-19260: Make cookie atomic to serialize set/get in ConnHandler\n  MB-19259: Fix data race on DcpConsumer::backoffs\n  MB-19258: Address data race with replicationThrottle parameters\n  MB-19281: [BP] Add template class RelaxedAtomic<>\n  MB-19257: Fix data race on ExecutorThread::now\n  MB-19256: Address possible data race on VBCBAdaptor::currentvb\n\nFurther merge of mostly TSan fixes from 3.0.x into sherlock.\n\nChange-Id: Ic88c446c4e09d669f7a4da7f8cb2f97c13d70ab7","distinct":true,"url":"https://api.github.com/repos/membase/ep-engine/commits/24fbb82abdb1d78b71dde958ec676a38147cafcc"},{"sha":"002f68f2a048dfbce4d1a573ad71d3810773ee47","author":{"name":"Dave Rigby","email":"f1dabaf34419d2352350e740ada40ded900019c4@couchbase.com"},"message":"Merge \"Merge remote-tracking branch 'couchbase/3.0.x' into sherlock\" into sherlock","distinct":true,"url":"https://api.github.com/repos/membase/ep-engine/commits/002f68f2a048dfbce4d1a573ad71d3810773ee47"}]}
{"actor":{"display_login":"cb-robot"}}