)]}'
{"id":"ep-engine~65297","triplet_id":"ep-engine~3.0.x~Ia441d5f5898516e3526a610426fa81f5df0e35e6","project":"ep-engine","branch":"3.0.x","hashtags":[],"change_id":"Ia441d5f5898516e3526a610426fa81f5df0e35e6","subject":"MB-19982: Fix potential deadlock between DcpConsumer::bufMutex \u0026 connsLock","status":"MERGED","created":"2016-06-28 11:35:02.000000000","updated":"2016-06-28 14:18:42.000000000","submitted":"2016-06-28 14:18:42.000000000","submitter":{"_account_id":1000966,"name":"Dave Rigby","email":"daver@couchbase.com","username":"drigby","avatars":[{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"d87b04e9913bfdde0ae091fd7aaefd016588401a","_number":65297,"virtual_id_number":65297,"owner":{"_account_id":1000966,"name":"Dave Rigby","email":"daver@couchbase.com","username":"drigby","avatars":[{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"actions":{},"labels":{"Verified":{"approved":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":1000966,"name":"Dave Rigby","email":"daver@couchbase.com","username":"drigby","avatars":[{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"value":1,"date":"2016-06-28 14:18:42.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},{"value":0,"_account_id":1001546,"name":"Jim Walker","email":"jim@couchbase.com","username":"jim","avatars":[{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}],"values":{"-1":"Fails"," 0":"No score","+1":"Verified"},"description":"","default_value":0},"Code-Review":{"approved":{"_account_id":1001546,"name":"Jim Walker","email":"jim@couchbase.com","username":"jim","avatars":[{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"all":[{"value":0,"_account_id":1000966,"name":"Dave Rigby","email":"daver@couchbase.com","username":"drigby","avatars":[{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"value":0,"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},{"value":2,"date":"2016-06-28 14:18:42.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":1001546,"name":"Jim Walker","email":"jim@couchbase.com","username":"jim","avatars":[{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}],"values":{"-2":"Do not submit","-1":"I would prefer that you didn\u0027t submit this"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me, approved"},"description":"","default_value":0},"Well-Formed":{"approved":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":1000966,"name":"Dave Rigby","email":"daver@couchbase.com","username":"drigby","avatars":[{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"value":1,"date":"2016-06-28 14:18:42.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},{"value":0,"_account_id":1001546,"name":"Jim Walker","email":"jim@couchbase.com","username":"jim","avatars":[{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}],"values":{"-1":"Commit is not well-formed"," 0":"Well-formedness not checked","+1":"Commit is well-formed"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},{"_account_id":1000966,"name":"Dave Rigby","email":"daver@couchbase.com","username":"drigby","avatars":[{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"_account_id":1001546,"name":"Jim Walker","email":"jim@couchbase.com","username":"jim","avatars":[{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2016-06-28 11:35:50.000000000","updated_by":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"reviewer":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2016-06-28 13:52:46.000000000","updated_by":{"_account_id":1001546,"name":"Jim Walker","email":"jim@couchbase.com","username":"jim","avatars":[{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"reviewer":{"_account_id":1001546,"name":"Jim Walker","email":"jim@couchbase.com","username":"jim","avatars":[{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"state":"REVIEWER"}],"messages":[{"id":"e4f53580dbbed4dac1e4f3a1c4e9a2a0c72b584c","author":{"_account_id":1000966,"name":"Dave Rigby","email":"daver@couchbase.com","username":"drigby","avatars":[{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2016-06-28 11:35:02.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"279aa6787a3eb2f19066d62119a7c66aaa83c942","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2016-06-28 11:35:07.000000000","message":"Patch Set 1:\n\nBuild Started http://factory.couchbase.com/job/ep-engine-gerrit-3.0.x/669/","accounts_in_message":[],"_revision_number":1},{"id":"9e65b8ed8e2d3a2ed69c44bbd0bb4e4640682184","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2016-06-28 11:35:10.000000000","message":"Patch Set 1:\n\nBuild Started http://cv.jenkins.couchbase.com/job/ep-engine-threadsanitizer-3.0.x/286/","accounts_in_message":[],"_revision_number":1},{"id":"3f8ee8df09b45f3475f38f19cd0e4672049a4fb4","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2016-06-28 11:35:14.000000000","message":"Patch Set 1: Well-Formed+1\n\nPermission granted to commit: \n\nhttp://server.jenkins.couchbase.com/job/restricted-branch-check/17259/artifact/restricted.html : SUCCESS","accounts_in_message":[],"_revision_number":1},{"id":"84bafbb99ffdd4ec8f2d2112ba08bcccf1e89f1e","author":{"_account_id":1000966,"name":"Dave Rigby","email":"daver@couchbase.com","username":"drigby","avatars":[{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2016-06-28 11:35:40.000000000","message":"Uploaded patch set 2: Commit message was updated.","accounts_in_message":[],"_revision_number":2},{"id":"0f39adecb156f21c9cb77208497835f399a66426","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2016-06-28 11:35:41.000000000","message":"Patch Set 1: Verified-1\n\nBuild Failed \n\nhttp://cv.jenkins.couchbase.com/job/ep-engine-threadsanitizer-3.0.x/286/ : ABORTED","accounts_in_message":[],"_revision_number":1},{"id":"fd97e01e5c31e8893013a2d0a7a89b0d1e855983","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2016-06-28 11:35:50.000000000","message":"Patch Set 2:\n\nBuild Started http://cv.jenkins.couchbase.com/job/ep-engine-threadsanitizer-3.0.x/287/","accounts_in_message":[],"_revision_number":2},{"id":"e1a554671cb80f5a49055a9fd9d86ef78616af67","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2016-06-28 11:35:50.000000000","message":"Patch Set 2: Well-Formed+1\n\nPermission granted to commit: \n\nhttp://server.jenkins.couchbase.com/job/restricted-branch-check/17260/artifact/restricted.html : SUCCESS","accounts_in_message":[],"_revision_number":2},{"id":"17c43e30f38f5c700cc9fa55661336ed986d5b3b","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2016-06-28 11:35:51.000000000","message":"Patch Set 1:\n\nBuild Failed \n\nhttp://factory.couchbase.com/job/ep-engine-gerrit-3.0.x/669/ : ABORTED","accounts_in_message":[],"_revision_number":1},{"id":"eaedf34e563ae849e1157b9578e94b7281ca9f66","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2016-06-28 11:35:52.000000000","message":"Patch Set 2:\n\nBuild Started http://factory.couchbase.com/job/ep-engine-gerrit-3.0.x/670/","accounts_in_message":[],"_revision_number":2},{"id":"1edfd7776822d0b87e5e2b446ed6008ee647bf48","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2016-06-28 11:37:41.000000000","message":"Patch Set 2: Verified-1\n\nBuild Failed \n\nhttp://factory.couchbase.com/job/ep-engine-gerrit-3.0.x/670/ : FAILURE","accounts_in_message":[],"_revision_number":2},{"id":"145d0f5dbece3434b25bc0c131d152f204734910","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2016-06-28 11:39:28.000000000","message":"Patch Set 2: -Verified\n\nBuild Started http://factory.couchbase.com/job/ep-engine-gerrit-3.0.x/672/","accounts_in_message":[],"_revision_number":2},{"id":"9b1e2cdccf840f8e84b0933d19f6fde435bd56e6","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2016-06-28 11:46:36.000000000","message":"Patch Set 2: Verified-1\n\nBuild Failed \n\nhttp://cv.jenkins.couchbase.com/job/ep-engine-threadsanitizer-3.0.x/287/ : FAILURE\n\nFailure of a CTest test  ( http://cv.jenkins.couchbase.com//job/ep-engine-threadsanitizer-3.0.x/287/ )","accounts_in_message":[],"_revision_number":2},{"id":"b03207fb81aa2c68f0fba6e8e183949f7976515d","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2016-06-28 11:53:28.000000000","message":"Patch Set 2: Verified+1\n\nBuild Successful \n\nhttp://factory.couchbase.com/job/ep-engine-gerrit-3.0.x/672/ : SUCCESS","accounts_in_message":[],"_revision_number":2},{"id":"ff5d2afcc1162e3a0587d70735443a4b18b3851b","author":{"_account_id":1001546,"name":"Jim Walker","email":"jim@couchbase.com","username":"jim","avatars":[{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/a06928c0be234da34bb6fc731e04a0d7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2016-06-28 13:52:46.000000000","message":"Patch Set 2: Code-Review+2","accounts_in_message":[],"_revision_number":2},{"id":"d87b04e9913bfdde0ae091fd7aaefd016588401a","date":"2016-06-28 14:18:42.000000000","message":"Change has been successfully cherry-picked as 65bbce36a558ad0d50da29ddaa115c7133bb2261 by Dave Rigby","accounts_in_message":[],"_revision_number":2}],"current_revision_number":3,"current_revision":"65bbce36a558ad0d50da29ddaa115c7133bb2261","revisions":{"2de5122513f48bea00eba67db184cf2c6f0b5982":{"kind":"REWORK","_number":1,"created":"2016-06-28 11:35:02.000000000","uploader":{"_account_id":1000966,"name":"Dave Rigby","email":"daver@couchbase.com","username":"drigby","avatars":[{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/97/65297/1","fetch":{"anonymous http":{"url":"https://review.couchbase.org/ep-engine","ref":"refs/changes/97/65297/1","commands":{"Branch":"git fetch https://review.couchbase.org/ep-engine refs/changes/97/65297/1 \u0026\u0026 git checkout -b change-65297 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/ep-engine refs/changes/97/65297/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/ep-engine refs/changes/97/65297/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/ep-engine refs/changes/97/65297/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/ep-engine refs/changes/97/65297/1","Reset To":"git fetch https://review.couchbase.org/ep-engine refs/changes/97/65297/1 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"09ad001e84f8d86edabf88f750edac10e4b25e96","subject":"MB-14859: Handle quick successive BG Fetch of a key interleaved with exp pager"}],"author":{"name":"Dave Rigby","email":"daver@couchbase.com","date":"2016-06-28 11:27:25.000000000","tz":0},"committer":{"name":"Dave Rigby","email":"daver@couchbase.com","date":"2016-06-28 11:27:38.000000000","tz":0},"subject":"MB-19982: Fix potential deadlock between DcpConsumer::bufMutex \u0026 vbstateChange","message":"MB-19982: Fix potential deadlock between DcpConsumer::bufMutex \u0026 vbstateChange\n\nAs identified by ThreadSanitizer (see below). The issue is that the\nDcpConsumer::bufMutex and connsLock mutexes are acquired in different\norders:\n\nA) As part of processing incoming DCP messages\n   (PassiveStream::processBufferedMessages) we acquire (1) bufMutex,\n   then (2) acquire connsLock as part of DcpConnMap::vbucketStateChanged.\n\nB) When disconnecting a connection from the DcpConnMap, we acquire (1)\n   connsLock to locate the connection to be closed, and then (2)\n   acquire bufMutex as part of PassiveStream::setDead.\n\nAddress this by changing (B) - update the data structures maintaining\nthe map of cookie -\u003e connection (`all` and `map_`), *release\nconnsLock* and then call PassiveStream::setDead. Finally we re-acquire\nconnsLock to add the (now closed) stream to the deadConnections list.\n\nWARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid\u003d393)\n  Cycle in lock order graph: M22701 (0x7d5000018140) \u003d\u003e M969 (0x7d840001cc50) \u003d\u003e M22701\n\n  Mutex M969 acquired here while holding mutex M22701 in thread T10:\n    #0 pthread_mutex_lock \u003cnull\u003e (engine_testapp+0x00000047e980)\n    #1 cb_mutex_enter \u003cnull\u003e (libplatform.so.0.1.0+0x000000003960)\n    #2 Mutex::acquire() ep-engine/src/mutex.cc:31 (ep.so+0x0000001e60ce)\n    #3 LockHolder::lock() ep-engine/src/locks.h:71 (ep.so+0x000000080b33)\n    #4 LockHolder::LockHolder(Mutex\u0026, bool) ep-engine/src/locks.h:48 (ep.so+0x0000000807a2)\n    #5 DcpConnMap::vbucketStateChanged(unsigned short, vbucket_state_t) ep-engine/src/connmap.cc:1044 (ep.so+0x00000023b3ba)\n    #6 EventuallyPersistentStore::setVBucketState(unsigned short, vbucket_state_t, bool, bool) ep-engine/src/ep.cc:1057 (ep.so+0x0000000dc240)\n    #7 PassiveStream::processSetVBucketState(SetVBucketState*) ep-engine/src/dcp-stream.cc:1483 (ep.so+0x0000002a3125)\n    #8 PassiveStream::processBufferedMessages(unsigned int\u0026) ep-engine/src/dcp-stream.cc:1313 (ep.so+0x0000002a0b58)\n    #9 DcpConsumer::processBufferedItems() ep-engine/src/dcp-consumer.cc:608 (ep.so+0x0000002650c4)\n    #10 Processer::run() ep-engine/src/dcp-consumer.cc:48 (ep.so+0x000000264cbf)\n    #11 ExecutorThread::run() ep-engine/src/executorthread.cc:109 (ep.so+0x0000001e75a1)\n    #12 launch_executor_thread(void*) ep-engine/src/executorthread.cc:34 (ep.so+0x0000001e6bca)\n    #13 platform_thread_wrap platform/src/cb_pthreads.c (libplatform.so.0.1.0+0x00000000371c)\n\n  Mutex M22701 previously acquired by the same thread here:\n    #0 pthread_mutex_lock \u003cnull\u003e (engine_testapp+0x00000047e980)\n    #1 cb_mutex_enter \u003cnull\u003e (libplatform.so.0.1.0+0x000000003960)\n    #2 Mutex::acquire() ep-engine/src/mutex.cc:31 (ep.so+0x0000001e60ce)\n    #3 LockHolder::lock() ep-engine/src/locks.h:71 (ep.so+0x000000080b33)\n    #4 LockHolder::LockHolder(Mutex\u0026, bool) ep-engine/src/locks.h:48 (ep.so+0x0000000807a2)\n    #5 PassiveStream::processBufferedMessages(unsigned int\u0026) ep-engine/src/dcp-stream.cc:1286 (ep.so+0x0000002a085d)\n    #6 DcpConsumer::processBufferedItems() ep-engine/src/dcp-consumer.cc:608 (ep.so+0x0000002650c4)\n    #7 Processer::run() ep-engine/src/dcp-consumer.cc:48 (ep.so+0x000000264cbf)\n    #8 ExecutorThread::run() ep-engine/src/executorthread.cc:109 (ep.so+0x0000001e75a1)\n    #9 launch_executor_thread(void*) ep-engine/src/executorthread.cc:34 (ep.so+0x0000001e6bca)\n    #10 platform_thread_wrap platform/src/cb_pthreads.c (libplatform.so.0.1.0+0x00000000371c)\n\n  Mutex M22701 acquired here while holding mutex M969 in main thread:\n    #0 pthread_mutex_lock \u003cnull\u003e (engine_testapp+0x00000047e980)\n    #1 cb_mutex_enter \u003cnull\u003e (libplatform.so.0.1.0+0x000000003960)\n    #2 Mutex::acquire() ep-engine/src/mutex.cc:31 (ep.so+0x0000001e60ce)\n    #3 LockHolder::lock() ep-engine/src/locks.h:71 (ep.so+0x000000080b33)\n    #4 LockHolder::LockHolder(Mutex\u0026, bool) ep-engine/src/locks.h:48 (ep.so+0x0000000807a2)\n    #5 PassiveStream::clearBuffer() ep-engine/src/dcp-stream.cc:1573 (ep.so+0x00000029e6a1)\n    #6 PassiveStream::setDead(end_stream_status_t) ep-engine/src/dcp-stream.cc:1171 (ep.so+0x00000029dffc)\n    #7 DcpConsumer::closeAllStreams() ep-engine/src/dcp-consumer.cc:722 (ep.so+0x00000026fb66)\n    #8 DcpConnMap::disconnect_UNLOCKED(void const*) ep-engine/src/connmap.cc:1096 (ep.so+0x00000023bbe3)\n    #9 DcpConnMap::disconnect(void const*) ep-engine/src/connmap.cc:1069 (ep.so+0x00000023b664)\n    #10 EventuallyPersistentEngine::handleDisconnect(void const*) ep-engine/src/ep_engine.cc:5711 (ep.so+0x0000001617ab)\n    #11 EvpHandleDisconnect(void const*, ENGINE_EVENT_TYPE, void const*, void const*) ep-engine/src/ep_engine.cc:1702 (ep.so+0x00000013d415)\n    #12 mock_perform_callbacks memcached/programs/engine_testapp/mock_server.c (engine_testapp+0x0000004d04db)\n    #13 disconnect_mock_connection \u003cnull\u003e (engine_testapp+0x0000004d10c6)\n    #14 destroy_mock_cookie \u003cnull\u003e (engine_testapp+0x0000004d0fa7)\n    #15 test_mb19982(engine_interface*, engine_interface_v1*) ep-engine/tests/ep_testsuite.cc:12020 (ep_testsuite.so+0x0000000b1d7d)\n    #16 execute_test memcached/programs/engine_testapp/engine_testapp.c (engine_testapp+0x0000004c50bf)\n    #17 main crtstuff.c (engine_testapp+0x0000004c2ea8)\n\n  Mutex M969 previously acquired by the same thread here:\n    #0 pthread_mutex_lock \u003cnull\u003e (engine_testapp+0x00000047e980)\n    #1 cb_mutex_enter \u003cnull\u003e (libplatform.so.0.1.0+0x000000003960)\n    #2 Mutex::acquire() ep-engine/src/mutex.cc:31 (ep.so+0x0000001e60ce)\n    #3 LockHolder::lock() ep-engine/src/locks.h:71 (ep.so+0x000000080b33)\n    #4 LockHolder::LockHolder(Mutex\u0026, bool) ep-engine/src/locks.h:48 (ep.so+0x0000000807a2)\n    #5 DcpConnMap::disconnect(void const*) ep-engine/src/connmap.cc:1068 (ep.so+0x00000023b64e)\n    #6 EventuallyPersistentEngine::handleDisconnect(void const*) ep-engine/src/ep_engine.cc:5711 (ep.so+0x0000001617ab)\n    #7 EvpHandleDisconnect(void const*, ENGINE_EVENT_TYPE, void const*, void const*) ep-engine/src/ep_engine.cc:1702 (ep.so+0x00000013d415)\n    #8 mock_perform_callbacks memcached/programs/engine_testapp/mock_server.c (engine_testapp+0x0000004d04db)\n    #9 disconnect_mock_connection \u003cnull\u003e (engine_testapp+0x0000004d10c6)\n    #10 destroy_mock_cookie \u003cnull\u003e (engine_testapp+0x0000004d0fa7)\n    #11 test_mb19982(engine_interface*, engine_interface_v1*) ep-engine/tests/ep_testsuite.cc:12020 (ep_testsuite.so+0x0000000b1d7d)\n    #12 execute_test memcached/programs/engine_testapp/engine_testapp.c (engine_testapp+0x0000004c50bf)\n    #13 main crtstuff.c (engine_testapp+0x0000004c2ea8)\n\nSUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 __interceptor_pthread_mutex_lock\n\nChange-Id: Ia441d5f5898516e3526a610426fa81f5df0e35e6\n"},"parents_data":[{"branch_name":"refs/heads/3.0.x","commit_id":"09ad001e84f8d86edabf88f750edac10e4b25e96","is_merged_in_target_branch":true,"change_id":"I8eaf54319014ea4039c74d2cbfab21ef275939fe","change_number":64929,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/3.0.x"},"375004df28dc83728f7956d770de1a3ae794d733":{"kind":"NO_CODE_CHANGE","_number":2,"created":"2016-06-28 11:35:40.000000000","uploader":{"_account_id":1000966,"name":"Dave Rigby","email":"daver@couchbase.com","username":"drigby","avatars":[{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/97/65297/2","fetch":{"anonymous http":{"url":"https://review.couchbase.org/ep-engine","ref":"refs/changes/97/65297/2","commands":{"Branch":"git fetch https://review.couchbase.org/ep-engine refs/changes/97/65297/2 \u0026\u0026 git checkout -b change-65297 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/ep-engine refs/changes/97/65297/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/ep-engine refs/changes/97/65297/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/ep-engine refs/changes/97/65297/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/ep-engine refs/changes/97/65297/2","Reset To":"git fetch https://review.couchbase.org/ep-engine refs/changes/97/65297/2 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"09ad001e84f8d86edabf88f750edac10e4b25e96","subject":"MB-14859: Handle quick successive BG Fetch of a key interleaved with exp pager"}],"author":{"name":"Dave Rigby","email":"daver@couchbase.com","date":"2016-06-28 11:27:25.000000000","tz":0},"committer":{"name":"Dave Rigby","email":"daver@couchbase.com","date":"2016-06-28 11:35:32.000000000","tz":0},"subject":"MB-19982: Fix potential deadlock between DcpConsumer::bufMutex \u0026 connsLock","message":"MB-19982: Fix potential deadlock between DcpConsumer::bufMutex \u0026 connsLock\n\nAs identified by ThreadSanitizer (see below). The issue is that the\nDcpConsumer::bufMutex and connsLock mutexes are acquired in different\norders:\n\nA) As part of processing incoming DCP messages\n   (PassiveStream::processBufferedMessages) we acquire (1) bufMutex,\n   then (2) acquire connsLock as part of DcpConnMap::vbucketStateChanged.\n\nB) When disconnecting a connection from the DcpConnMap, we acquire (1)\n   connsLock to locate the connection to be closed, and then (2)\n   acquire bufMutex as part of PassiveStream::setDead.\n\nAddress this by changing (B) - update the data structures maintaining\nthe map of cookie -\u003e connection (`all` and `map_`), *release\nconnsLock* and then call PassiveStream::setDead. Finally we re-acquire\nconnsLock to add the (now closed) stream to the deadConnections list.\n\nWARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid\u003d393)\n  Cycle in lock order graph: M22701 (0x7d5000018140) \u003d\u003e M969 (0x7d840001cc50) \u003d\u003e M22701\n\n  Mutex M969 acquired here while holding mutex M22701 in thread T10:\n    #0 pthread_mutex_lock \u003cnull\u003e (engine_testapp+0x00000047e980)\n    #1 cb_mutex_enter \u003cnull\u003e (libplatform.so.0.1.0+0x000000003960)\n    #2 Mutex::acquire() ep-engine/src/mutex.cc:31 (ep.so+0x0000001e60ce)\n    #3 LockHolder::lock() ep-engine/src/locks.h:71 (ep.so+0x000000080b33)\n    #4 LockHolder::LockHolder(Mutex\u0026, bool) ep-engine/src/locks.h:48 (ep.so+0x0000000807a2)\n    #5 DcpConnMap::vbucketStateChanged(unsigned short, vbucket_state_t) ep-engine/src/connmap.cc:1044 (ep.so+0x00000023b3ba)\n    #6 EventuallyPersistentStore::setVBucketState(unsigned short, vbucket_state_t, bool, bool) ep-engine/src/ep.cc:1057 (ep.so+0x0000000dc240)\n    #7 PassiveStream::processSetVBucketState(SetVBucketState*) ep-engine/src/dcp-stream.cc:1483 (ep.so+0x0000002a3125)\n    #8 PassiveStream::processBufferedMessages(unsigned int\u0026) ep-engine/src/dcp-stream.cc:1313 (ep.so+0x0000002a0b58)\n    #9 DcpConsumer::processBufferedItems() ep-engine/src/dcp-consumer.cc:608 (ep.so+0x0000002650c4)\n    #10 Processer::run() ep-engine/src/dcp-consumer.cc:48 (ep.so+0x000000264cbf)\n    #11 ExecutorThread::run() ep-engine/src/executorthread.cc:109 (ep.so+0x0000001e75a1)\n    #12 launch_executor_thread(void*) ep-engine/src/executorthread.cc:34 (ep.so+0x0000001e6bca)\n    #13 platform_thread_wrap platform/src/cb_pthreads.c (libplatform.so.0.1.0+0x00000000371c)\n\n  Mutex M22701 previously acquired by the same thread here:\n    #0 pthread_mutex_lock \u003cnull\u003e (engine_testapp+0x00000047e980)\n    #1 cb_mutex_enter \u003cnull\u003e (libplatform.so.0.1.0+0x000000003960)\n    #2 Mutex::acquire() ep-engine/src/mutex.cc:31 (ep.so+0x0000001e60ce)\n    #3 LockHolder::lock() ep-engine/src/locks.h:71 (ep.so+0x000000080b33)\n    #4 LockHolder::LockHolder(Mutex\u0026, bool) ep-engine/src/locks.h:48 (ep.so+0x0000000807a2)\n    #5 PassiveStream::processBufferedMessages(unsigned int\u0026) ep-engine/src/dcp-stream.cc:1286 (ep.so+0x0000002a085d)\n    #6 DcpConsumer::processBufferedItems() ep-engine/src/dcp-consumer.cc:608 (ep.so+0x0000002650c4)\n    #7 Processer::run() ep-engine/src/dcp-consumer.cc:48 (ep.so+0x000000264cbf)\n    #8 ExecutorThread::run() ep-engine/src/executorthread.cc:109 (ep.so+0x0000001e75a1)\n    #9 launch_executor_thread(void*) ep-engine/src/executorthread.cc:34 (ep.so+0x0000001e6bca)\n    #10 platform_thread_wrap platform/src/cb_pthreads.c (libplatform.so.0.1.0+0x00000000371c)\n\n  Mutex M22701 acquired here while holding mutex M969 in main thread:\n    #0 pthread_mutex_lock \u003cnull\u003e (engine_testapp+0x00000047e980)\n    #1 cb_mutex_enter \u003cnull\u003e (libplatform.so.0.1.0+0x000000003960)\n    #2 Mutex::acquire() ep-engine/src/mutex.cc:31 (ep.so+0x0000001e60ce)\n    #3 LockHolder::lock() ep-engine/src/locks.h:71 (ep.so+0x000000080b33)\n    #4 LockHolder::LockHolder(Mutex\u0026, bool) ep-engine/src/locks.h:48 (ep.so+0x0000000807a2)\n    #5 PassiveStream::clearBuffer() ep-engine/src/dcp-stream.cc:1573 (ep.so+0x00000029e6a1)\n    #6 PassiveStream::setDead(end_stream_status_t) ep-engine/src/dcp-stream.cc:1171 (ep.so+0x00000029dffc)\n    #7 DcpConsumer::closeAllStreams() ep-engine/src/dcp-consumer.cc:722 (ep.so+0x00000026fb66)\n    #8 DcpConnMap::disconnect_UNLOCKED(void const*) ep-engine/src/connmap.cc:1096 (ep.so+0x00000023bbe3)\n    #9 DcpConnMap::disconnect(void const*) ep-engine/src/connmap.cc:1069 (ep.so+0x00000023b664)\n    #10 EventuallyPersistentEngine::handleDisconnect(void const*) ep-engine/src/ep_engine.cc:5711 (ep.so+0x0000001617ab)\n    #11 EvpHandleDisconnect(void const*, ENGINE_EVENT_TYPE, void const*, void const*) ep-engine/src/ep_engine.cc:1702 (ep.so+0x00000013d415)\n    #12 mock_perform_callbacks memcached/programs/engine_testapp/mock_server.c (engine_testapp+0x0000004d04db)\n    #13 disconnect_mock_connection \u003cnull\u003e (engine_testapp+0x0000004d10c6)\n    #14 destroy_mock_cookie \u003cnull\u003e (engine_testapp+0x0000004d0fa7)\n    #15 test_mb19982(engine_interface*, engine_interface_v1*) ep-engine/tests/ep_testsuite.cc:12020 (ep_testsuite.so+0x0000000b1d7d)\n    #16 execute_test memcached/programs/engine_testapp/engine_testapp.c (engine_testapp+0x0000004c50bf)\n    #17 main crtstuff.c (engine_testapp+0x0000004c2ea8)\n\n  Mutex M969 previously acquired by the same thread here:\n    #0 pthread_mutex_lock \u003cnull\u003e (engine_testapp+0x00000047e980)\n    #1 cb_mutex_enter \u003cnull\u003e (libplatform.so.0.1.0+0x000000003960)\n    #2 Mutex::acquire() ep-engine/src/mutex.cc:31 (ep.so+0x0000001e60ce)\n    #3 LockHolder::lock() ep-engine/src/locks.h:71 (ep.so+0x000000080b33)\n    #4 LockHolder::LockHolder(Mutex\u0026, bool) ep-engine/src/locks.h:48 (ep.so+0x0000000807a2)\n    #5 DcpConnMap::disconnect(void const*) ep-engine/src/connmap.cc:1068 (ep.so+0x00000023b64e)\n    #6 EventuallyPersistentEngine::handleDisconnect(void const*) ep-engine/src/ep_engine.cc:5711 (ep.so+0x0000001617ab)\n    #7 EvpHandleDisconnect(void const*, ENGINE_EVENT_TYPE, void const*, void const*) ep-engine/src/ep_engine.cc:1702 (ep.so+0x00000013d415)\n    #8 mock_perform_callbacks memcached/programs/engine_testapp/mock_server.c (engine_testapp+0x0000004d04db)\n    #9 disconnect_mock_connection \u003cnull\u003e (engine_testapp+0x0000004d10c6)\n    #10 destroy_mock_cookie \u003cnull\u003e (engine_testapp+0x0000004d0fa7)\n    #11 test_mb19982(engine_interface*, engine_interface_v1*) ep-engine/tests/ep_testsuite.cc:12020 (ep_testsuite.so+0x0000000b1d7d)\n    #12 execute_test memcached/programs/engine_testapp/engine_testapp.c (engine_testapp+0x0000004c50bf)\n    #13 main crtstuff.c (engine_testapp+0x0000004c2ea8)\n\nSUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 __interceptor_pthread_mutex_lock\n\nChange-Id: Ia441d5f5898516e3526a610426fa81f5df0e35e6\n"},"parents_data":[{"branch_name":"refs/heads/3.0.x","commit_id":"09ad001e84f8d86edabf88f750edac10e4b25e96","is_merged_in_target_branch":true,"change_id":"I8eaf54319014ea4039c74d2cbfab21ef275939fe","change_number":64929,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/3.0.x"},"65bbce36a558ad0d50da29ddaa115c7133bb2261":{"kind":"NO_CODE_CHANGE","_number":3,"created":"2016-06-28 14:18:42.000000000","uploader":{"_account_id":1000966,"name":"Dave Rigby","email":"daver@couchbase.com","username":"drigby","avatars":[{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/514e75a8d75cc1fcdb22433d445ae8f1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/97/65297/3","fetch":{"anonymous http":{"url":"https://review.couchbase.org/ep-engine","ref":"refs/changes/97/65297/3","commands":{"Branch":"git fetch https://review.couchbase.org/ep-engine refs/changes/97/65297/3 \u0026\u0026 git checkout -b change-65297 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/ep-engine refs/changes/97/65297/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/ep-engine refs/changes/97/65297/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/ep-engine refs/changes/97/65297/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/ep-engine refs/changes/97/65297/3","Reset To":"git fetch https://review.couchbase.org/ep-engine refs/changes/97/65297/3 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"09ad001e84f8d86edabf88f750edac10e4b25e96","subject":"MB-14859: Handle quick successive BG Fetch of a key interleaved with exp pager"}],"author":{"name":"Dave Rigby","email":"daver@couchbase.com","date":"2016-06-28 11:27:25.000000000","tz":0},"committer":{"name":"Dave Rigby","email":"daver@couchbase.com","date":"2016-06-28 14:18:42.000000000","tz":0},"subject":"MB-19982: Fix potential deadlock between DcpConsumer::bufMutex \u0026 connsLock","message":"MB-19982: Fix potential deadlock between DcpConsumer::bufMutex \u0026 connsLock\n\nAs identified by ThreadSanitizer (see below). The issue is that the\nDcpConsumer::bufMutex and connsLock mutexes are acquired in different\norders:\n\nA) As part of processing incoming DCP messages\n   (PassiveStream::processBufferedMessages) we acquire (1) bufMutex,\n   then (2) acquire connsLock as part of DcpConnMap::vbucketStateChanged.\n\nB) When disconnecting a connection from the DcpConnMap, we acquire (1)\n   connsLock to locate the connection to be closed, and then (2)\n   acquire bufMutex as part of PassiveStream::setDead.\n\nAddress this by changing (B) - update the data structures maintaining\nthe map of cookie -\u003e connection (`all` and `map_`), *release\nconnsLock* and then call PassiveStream::setDead. Finally we re-acquire\nconnsLock to add the (now closed) stream to the deadConnections list.\n\nWARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid\u003d393)\n  Cycle in lock order graph: M22701 (0x7d5000018140) \u003d\u003e M969 (0x7d840001cc50) \u003d\u003e M22701\n\n  Mutex M969 acquired here while holding mutex M22701 in thread T10:\n    #0 pthread_mutex_lock \u003cnull\u003e (engine_testapp+0x00000047e980)\n    #1 cb_mutex_enter \u003cnull\u003e (libplatform.so.0.1.0+0x000000003960)\n    #2 Mutex::acquire() ep-engine/src/mutex.cc:31 (ep.so+0x0000001e60ce)\n    #3 LockHolder::lock() ep-engine/src/locks.h:71 (ep.so+0x000000080b33)\n    #4 LockHolder::LockHolder(Mutex\u0026, bool) ep-engine/src/locks.h:48 (ep.so+0x0000000807a2)\n    #5 DcpConnMap::vbucketStateChanged(unsigned short, vbucket_state_t) ep-engine/src/connmap.cc:1044 (ep.so+0x00000023b3ba)\n    #6 EventuallyPersistentStore::setVBucketState(unsigned short, vbucket_state_t, bool, bool) ep-engine/src/ep.cc:1057 (ep.so+0x0000000dc240)\n    #7 PassiveStream::processSetVBucketState(SetVBucketState*) ep-engine/src/dcp-stream.cc:1483 (ep.so+0x0000002a3125)\n    #8 PassiveStream::processBufferedMessages(unsigned int\u0026) ep-engine/src/dcp-stream.cc:1313 (ep.so+0x0000002a0b58)\n    #9 DcpConsumer::processBufferedItems() ep-engine/src/dcp-consumer.cc:608 (ep.so+0x0000002650c4)\n    #10 Processer::run() ep-engine/src/dcp-consumer.cc:48 (ep.so+0x000000264cbf)\n    #11 ExecutorThread::run() ep-engine/src/executorthread.cc:109 (ep.so+0x0000001e75a1)\n    #12 launch_executor_thread(void*) ep-engine/src/executorthread.cc:34 (ep.so+0x0000001e6bca)\n    #13 platform_thread_wrap platform/src/cb_pthreads.c (libplatform.so.0.1.0+0x00000000371c)\n\n  Mutex M22701 previously acquired by the same thread here:\n    #0 pthread_mutex_lock \u003cnull\u003e (engine_testapp+0x00000047e980)\n    #1 cb_mutex_enter \u003cnull\u003e (libplatform.so.0.1.0+0x000000003960)\n    #2 Mutex::acquire() ep-engine/src/mutex.cc:31 (ep.so+0x0000001e60ce)\n    #3 LockHolder::lock() ep-engine/src/locks.h:71 (ep.so+0x000000080b33)\n    #4 LockHolder::LockHolder(Mutex\u0026, bool) ep-engine/src/locks.h:48 (ep.so+0x0000000807a2)\n    #5 PassiveStream::processBufferedMessages(unsigned int\u0026) ep-engine/src/dcp-stream.cc:1286 (ep.so+0x0000002a085d)\n    #6 DcpConsumer::processBufferedItems() ep-engine/src/dcp-consumer.cc:608 (ep.so+0x0000002650c4)\n    #7 Processer::run() ep-engine/src/dcp-consumer.cc:48 (ep.so+0x000000264cbf)\n    #8 ExecutorThread::run() ep-engine/src/executorthread.cc:109 (ep.so+0x0000001e75a1)\n    #9 launch_executor_thread(void*) ep-engine/src/executorthread.cc:34 (ep.so+0x0000001e6bca)\n    #10 platform_thread_wrap platform/src/cb_pthreads.c (libplatform.so.0.1.0+0x00000000371c)\n\n  Mutex M22701 acquired here while holding mutex M969 in main thread:\n    #0 pthread_mutex_lock \u003cnull\u003e (engine_testapp+0x00000047e980)\n    #1 cb_mutex_enter \u003cnull\u003e (libplatform.so.0.1.0+0x000000003960)\n    #2 Mutex::acquire() ep-engine/src/mutex.cc:31 (ep.so+0x0000001e60ce)\n    #3 LockHolder::lock() ep-engine/src/locks.h:71 (ep.so+0x000000080b33)\n    #4 LockHolder::LockHolder(Mutex\u0026, bool) ep-engine/src/locks.h:48 (ep.so+0x0000000807a2)\n    #5 PassiveStream::clearBuffer() ep-engine/src/dcp-stream.cc:1573 (ep.so+0x00000029e6a1)\n    #6 PassiveStream::setDead(end_stream_status_t) ep-engine/src/dcp-stream.cc:1171 (ep.so+0x00000029dffc)\n    #7 DcpConsumer::closeAllStreams() ep-engine/src/dcp-consumer.cc:722 (ep.so+0x00000026fb66)\n    #8 DcpConnMap::disconnect_UNLOCKED(void const*) ep-engine/src/connmap.cc:1096 (ep.so+0x00000023bbe3)\n    #9 DcpConnMap::disconnect(void const*) ep-engine/src/connmap.cc:1069 (ep.so+0x00000023b664)\n    #10 EventuallyPersistentEngine::handleDisconnect(void const*) ep-engine/src/ep_engine.cc:5711 (ep.so+0x0000001617ab)\n    #11 EvpHandleDisconnect(void const*, ENGINE_EVENT_TYPE, void const*, void const*) ep-engine/src/ep_engine.cc:1702 (ep.so+0x00000013d415)\n    #12 mock_perform_callbacks memcached/programs/engine_testapp/mock_server.c (engine_testapp+0x0000004d04db)\n    #13 disconnect_mock_connection \u003cnull\u003e (engine_testapp+0x0000004d10c6)\n    #14 destroy_mock_cookie \u003cnull\u003e (engine_testapp+0x0000004d0fa7)\n    #15 test_mb19982(engine_interface*, engine_interface_v1*) ep-engine/tests/ep_testsuite.cc:12020 (ep_testsuite.so+0x0000000b1d7d)\n    #16 execute_test memcached/programs/engine_testapp/engine_testapp.c (engine_testapp+0x0000004c50bf)\n    #17 main crtstuff.c (engine_testapp+0x0000004c2ea8)\n\n  Mutex M969 previously acquired by the same thread here:\n    #0 pthread_mutex_lock \u003cnull\u003e (engine_testapp+0x00000047e980)\n    #1 cb_mutex_enter \u003cnull\u003e (libplatform.so.0.1.0+0x000000003960)\n    #2 Mutex::acquire() ep-engine/src/mutex.cc:31 (ep.so+0x0000001e60ce)\n    #3 LockHolder::lock() ep-engine/src/locks.h:71 (ep.so+0x000000080b33)\n    #4 LockHolder::LockHolder(Mutex\u0026, bool) ep-engine/src/locks.h:48 (ep.so+0x0000000807a2)\n    #5 DcpConnMap::disconnect(void const*) ep-engine/src/connmap.cc:1068 (ep.so+0x00000023b64e)\n    #6 EventuallyPersistentEngine::handleDisconnect(void const*) ep-engine/src/ep_engine.cc:5711 (ep.so+0x0000001617ab)\n    #7 EvpHandleDisconnect(void const*, ENGINE_EVENT_TYPE, void const*, void const*) ep-engine/src/ep_engine.cc:1702 (ep.so+0x00000013d415)\n    #8 mock_perform_callbacks memcached/programs/engine_testapp/mock_server.c (engine_testapp+0x0000004d04db)\n    #9 disconnect_mock_connection \u003cnull\u003e (engine_testapp+0x0000004d10c6)\n    #10 destroy_mock_cookie \u003cnull\u003e (engine_testapp+0x0000004d0fa7)\n    #11 test_mb19982(engine_interface*, engine_interface_v1*) ep-engine/tests/ep_testsuite.cc:12020 (ep_testsuite.so+0x0000000b1d7d)\n    #12 execute_test memcached/programs/engine_testapp/engine_testapp.c (engine_testapp+0x0000004c50bf)\n    #13 main crtstuff.c (engine_testapp+0x0000004c2ea8)\n\nSUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 __interceptor_pthread_mutex_lock\n\nChange-Id: Ia441d5f5898516e3526a610426fa81f5df0e35e6\nReviewed-on: http://review.couchbase.org/65297\nWell-Formed: buildbot \u003cbuild@couchbase.com\u003e\nTested-by: buildbot \u003cbuild@couchbase.com\u003e\nReviewed-by: Jim Walker \u003cjim@couchbase.com\u003e\n"},"parents_data":[{"branch_name":"refs/heads/3.0.x","commit_id":"09ad001e84f8d86edabf88f750edac10e4b25e96","is_merged_in_target_branch":true,"change_id":"I8eaf54319014ea4039c74d2cbfab21ef275939fe","change_number":64929,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/3.0.x"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
