)]}'
{"id":"kv_engine~111905","triplet_id":"kv_engine~master~Ibb2ae11498c7226514bc18788778878bd6c87363","project":"kv_engine","branch":"master","hashtags":[],"change_id":"Ibb2ae11498c7226514bc18788778878bd6c87363","subject":"MB-35049: Release StreamContainer rlock before calling Stream::setDead","status":"MERGED","created":"2019-07-12 10:39:05.000000000","updated":"2019-07-15 08:09:23.000000000","submitted":"2019-07-15 07:38:31.000000000","submitter":{"_account_id":1001547,"name":"Dan Owen","email":"owend@couchbase.com","username":"owend","avatars":[{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"total_comment_count":3,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"111905-1563176311149-3814a777","meta_rev_id":"596a5df2bedefecb765783e7c693b06522a3e03b","_number":111905,"virtual_id_number":111905,"owner":{"_account_id":1003828,"name":"James H","email":"james.harrison@couchbase.com","username":"jameseh96","avatars":[{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.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":1000002,"name":"Trond Norbye","display_name":"Trond","email":"trond.norbye@couchbase.com","username":"trond","avatars":[{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"value":0,"_account_id":1004368,"name":"Richard de Mellow","email":"richard.demellow@couchbase.com","username":"rdemellow","avatars":[{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"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":1004341,"name":"Ben Huddleston","email":"ben.huddleston@couchbase.com","username":"BenHuddleston","avatars":[{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"value":0,"_account_id":1003828,"name":"James H","email":"james.harrison@couchbase.com","username":"jameseh96","avatars":[{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"value":0,"_account_id":1001547,"name":"Dan Owen","email":"owend@couchbase.com","username":"owend","avatars":[{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"tag":"autogenerated:jenkins-gerrit-trigger","value":1,"date":"2019-07-15 07:38:31.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":1001610,"name":"David Haikney","email":"david.haikney@couchbase.com","username":"dhaikney","avatars":[{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"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}]},{"value":0,"_account_id":1002319,"name":"Dave Finlay","email":"dave.finlay@couchbase.com","username":"dave-finlay","avatars":[{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.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":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}]},"all":[{"value":0,"_account_id":1000002,"name":"Trond Norbye","display_name":"Trond","email":"trond.norbye@couchbase.com","username":"trond","avatars":[{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"value":0,"_account_id":1004368,"name":"Richard de Mellow","email":"richard.demellow@couchbase.com","username":"rdemellow","avatars":[{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"value":2,"date":"2019-07-15 07:38:31.000000000","_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":1004341,"name":"Ben Huddleston","email":"ben.huddleston@couchbase.com","username":"BenHuddleston","avatars":[{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"value":0,"_account_id":1003828,"name":"James H","email":"james.harrison@couchbase.com","username":"jameseh96","avatars":[{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"value":0,"_account_id":1001547,"name":"Dan Owen","email":"owend@couchbase.com","username":"owend","avatars":[{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.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":0,"_account_id":1001610,"name":"David Haikney","email":"david.haikney@couchbase.com","username":"dhaikney","avatars":[{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"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}]},{"value":0,"_account_id":1002319,"name":"Dave Finlay","email":"dave.finlay@couchbase.com","username":"dave-finlay","avatars":[{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.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":{"all":[{"value":0,"_account_id":1000002,"name":"Trond Norbye","display_name":"Trond","email":"trond.norbye@couchbase.com","username":"trond","avatars":[{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"value":0,"_account_id":1004368,"name":"Richard de Mellow","email":"richard.demellow@couchbase.com","username":"rdemellow","avatars":[{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"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":1004341,"name":"Ben Huddleston","email":"ben.huddleston@couchbase.com","username":"BenHuddleston","avatars":[{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"value":0,"_account_id":1003828,"name":"James H","email":"james.harrison@couchbase.com","username":"jameseh96","avatars":[{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"value":0,"_account_id":1001547,"name":"Dan Owen","email":"owend@couchbase.com","username":"owend","avatars":[{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.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":0,"_account_id":1001610,"name":"David Haikney","email":"david.haikney@couchbase.com","username":"dhaikney","avatars":[{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"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}]},{"value":0,"_account_id":1002319,"name":"Dave Finlay","email":"dave.finlay@couchbase.com","username":"dave-finlay","avatars":[{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.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":1000002,"name":"Trond Norbye","display_name":"Trond","email":"trond.norbye@couchbase.com","username":"trond","avatars":[{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"_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}]},{"_account_id":1001547,"name":"Dan Owen","email":"owend@couchbase.com","username":"owend","avatars":[{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"_account_id":1001610,"name":"David Haikney","email":"david.haikney@couchbase.com","username":"dhaikney","avatars":[{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"_account_id":1002319,"name":"Dave Finlay","email":"dave.finlay@couchbase.com","username":"dave-finlay","avatars":[{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"_account_id":1003828,"name":"James H","email":"james.harrison@couchbase.com","username":"jameseh96","avatars":[{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"_account_id":1004341,"name":"Ben Huddleston","email":"ben.huddleston@couchbase.com","username":"BenHuddleston","avatars":[{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"_account_id":1004368,"name":"Richard de Mellow","email":"richard.demellow@couchbase.com","username":"rdemellow","avatars":[{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2019-07-12 10:39:30.000000000","updated_by":{"_account_id":1000002,"name":"Trond Norbye","display_name":"Trond","email":"trond.norbye@couchbase.com","username":"trond","avatars":[{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"reviewer":{"_account_id":1000002,"name":"Trond Norbye","display_name":"Trond","email":"trond.norbye@couchbase.com","username":"trond","avatars":[{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"state":"REVIEWER"},{"updated":"2019-07-12 10:39:30.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"},{"updated":"2019-07-12 10:39:30.000000000","updated_by":{"_account_id":1001610,"name":"David Haikney","email":"david.haikney@couchbase.com","username":"dhaikney","avatars":[{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"reviewer":{"_account_id":1001610,"name":"David Haikney","email":"david.haikney@couchbase.com","username":"dhaikney","avatars":[{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/11f1fd641cf6b5c254b2714b69de9e96.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"state":"REVIEWER"},{"updated":"2019-07-12 10:39:30.000000000","updated_by":{"_account_id":1002319,"name":"Dave Finlay","email":"dave.finlay@couchbase.com","username":"dave-finlay","avatars":[{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"reviewer":{"_account_id":1002319,"name":"Dave Finlay","email":"dave.finlay@couchbase.com","username":"dave-finlay","avatars":[{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/aa50dbeeeae1f0a9a777fcf4b80c4fb9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"state":"REVIEWER"},{"updated":"2019-07-12 10:39:30.000000000","updated_by":{"_account_id":1004341,"name":"Ben Huddleston","email":"ben.huddleston@couchbase.com","username":"BenHuddleston","avatars":[{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"reviewer":{"_account_id":1004341,"name":"Ben Huddleston","email":"ben.huddleston@couchbase.com","username":"BenHuddleston","avatars":[{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ccb3e7e3b52c3d14e759d1b4c0507a3b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"state":"REVIEWER"},{"updated":"2019-07-12 10:39:30.000000000","updated_by":{"_account_id":1004368,"name":"Richard de Mellow","email":"richard.demellow@couchbase.com","username":"rdemellow","avatars":[{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"reviewer":{"_account_id":1004368,"name":"Richard de Mellow","email":"richard.demellow@couchbase.com","username":"rdemellow","avatars":[{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/35c97da872c07458f5e5bc4938b2489f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"state":"REVIEWER"},{"updated":"2019-07-12 12:36:28.000000000","updated_by":{"_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}]},"reviewer":{"_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}]},"state":"REVIEWER"},{"updated":"2019-07-12 15:41:01.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":"2019-07-15 07:38:31.000000000","updated_by":{"_account_id":1001547,"name":"Dan Owen","email":"owend@couchbase.com","username":"owend","avatars":[{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"reviewer":{"_account_id":1001547,"name":"Dan Owen","email":"owend@couchbase.com","username":"owend","avatars":[{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"state":"REVIEWER"}],"messages":[{"id":"a6abc2dfc2b85b3810bcb48996fef2b2041d9dce","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1003828,"name":"James H","email":"james.harrison@couchbase.com","username":"jameseh96","avatars":[{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2019-07-12 10:39:05.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"c48246cf082c0c76fa355f3848ba1f3aa1857e91","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":"2019-07-12 10:51:21.000000000","message":"Patch Set 1: Code-Review-1\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"16bf38c95c33dd3f82251c10e0bf7913d8ffb329","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1003828,"name":"James H","email":"james.harrison@couchbase.com","username":"jameseh96","avatars":[{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2019-07-12 11:06:04.000000000","message":"Uploaded patch set 2: Commit message was updated.","accounts_in_message":[],"_revision_number":2},{"id":"8f1981649b05c0f5cbf41c562f70d394227cd3d1","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":"2019-07-12 11:17:50.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"452cf386d1eedd46cd43ea639f724b9450d8c606","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1003828,"name":"James H","email":"james.harrison@couchbase.com","username":"jameseh96","avatars":[{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2019-07-12 11:32:50.000000000","message":"Uploaded patch set 3: Commit message was updated.","accounts_in_message":[],"_revision_number":3},{"id":"7038bee4e4f24e7af702a0db6c75cfaac33ae713","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":"2019-07-12 11:36:48.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"109ea225308d5c6a4f7e4197315f914c9dcc26d9","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1003828,"name":"James H","email":"james.harrison@couchbase.com","username":"jameseh96","avatars":[{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2019-07-12 11:40:54.000000000","message":"Uploaded patch set 4: Commit message was updated.","accounts_in_message":[],"_revision_number":4},{"id":"cf8f003aa420bdcba2170a44b6538b7b82256d2e","tag":"autogenerated:jenkins-gerrit-trigger","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":"2019-07-12 11:49:53.000000000","message":"Patch Set 1: Verified-1\n\nBuild Failed \n\nhttp://cv.jenkins.couchbase.com/job/kv_engine-linux-master/21031/ : FAILURE\n\nFailure of a CTest test  35/201 Test  #36: ep_testsuite.full_eviction.rocksdb ........................................... ( http://cv.jenkins.couchbase.com/job/kv_engine-linux-master/21031/ )\n\nhttp://cv.jenkins.couchbase.com/job/kv_engine-clang_format/19675/ : SUCCESS\n\nhttp://cv.jenkins.couchbase.com/job/kv-engine-cv-perf/12049/ : SUCCESS\n\nhttp://cv.jenkins.couchbase.com/job/kv_engine-clang_analyzer-master/18735/ : SUCCESS\n\nhttp://cv.jenkins.couchbase.com/job/kv_engine-threadsanitizer-master/12827/ : SUCCESS\n\nhttp://cv.jenkins.couchbase.com/job/kv_engine-windows-master/21860/ : SUCCESS\n\nhttp://cv.jenkins.couchbase.com/job/kv_engine-linux-master-CE/2693/ : SUCCESS\n\nhttp://cv.jenkins.couchbase.com/job/kv_engine.ASan-UBSan/job/master/5609/ : SUCCESS","accounts_in_message":[],"_revision_number":1},{"id":"ac81c8d072d27e41171f8902cdc92be09d003290","tag":"autogenerated:jenkins-gerrit-trigger","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":"2019-07-12 12:34:52.000000000","message":"Patch Set 1: Verified+1\n\nBuild Successful \n\nhttp://cv.jenkins.couchbase.com/job/kv_engine-clang_format/19675/ : SUCCESS\n\nhttp://cv.jenkins.couchbase.com/job/kv-engine-cv-perf/12049/ : SUCCESS\n\nhttp://cv.jenkins.couchbase.com/job/kv_engine-clang_analyzer-master/18735/ : SUCCESS\n\nhttp://cv.jenkins.couchbase.com/job/kv_engine-threadsanitizer-master/12827/ : SUCCESS\n\nhttp://cv.jenkins.couchbase.com/job/kv_engine-windows-master/21860/ : SUCCESS\n\nhttp://cv.jenkins.couchbase.com/job/kv_engine-linux-master-CE/2693/ : SUCCESS\n\nhttp://cv.jenkins.couchbase.com/job/kv_engine.ASan-UBSan/job/master/5609/ : SUCCESS\n\nhttp://cv.jenkins.couchbase.com/job/kv_engine-linux-master/21040/ : SUCCESS","accounts_in_message":[],"_revision_number":1},{"id":"222c523f4773cf78586c1f9585396495d1e64cc2","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":"2019-07-12 12:36:28.000000000","message":"Patch Set 4: Code-Review+2","accounts_in_message":[],"_revision_number":4},{"id":"3774163777d67e00e5d4ae7dc2b2e02916568301","author":{"_account_id":1003828,"name":"James H","email":"james.harrison@couchbase.com","username":"jameseh96","avatars":[{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2019-07-12 12:54:59.000000000","message":"Patch Set 4:\n\nBuildbot voted +1 on the first patch and won\u0027t be retriggered with just a message change?\nmight verified+1 manually on patch set 4; there\u0027s no code change from 1 to 4","accounts_in_message":[],"_revision_number":4},{"id":"0b60f6d8c358616d2567958c7234c488e9324963","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":"2019-07-12 13:08:04.000000000","message":"Patch Set 4:\n\n\u003e Buildbot voted +1 on the first patch and won\u0027t be retriggered with\n \u003e just a message change?\n \u003e might verified+1 manually on patch set 4; there\u0027s no code change\n \u003e from 1 to 4\n\nYeah, there\u0027s a \"feature\" where if just the commit message has changed the votes are kept (and it won\u0027t retrigger CV). However if you change the commit message before the Verified vote is in; it doesn\u0027t get \"fast-forwarded\" to the current commit.\n\nIf you want a proper Jenkins vote; I\u0027d just rebase; or you can manually apply the Verified:+1.","accounts_in_message":[],"_revision_number":4},{"id":"3ffa05d1bcc723227eb30c3dcb8ea9dffbe9d8ba","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1003828,"name":"James H","email":"james.harrison@couchbase.com","username":"jameseh96","avatars":[{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2019-07-12 13:17:36.000000000","message":"Uploaded patch set 5: Patch Set 4 was rebased.","accounts_in_message":[],"_revision_number":5},{"id":"5a66ee9878d0789a206529ace449c42bb842dd1e","tag":"autogenerated:jenkins-gerrit-trigger","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":"2019-07-12 15:41:01.000000000","message":"Patch Set 5: Verified+1\n\nBuild Successful \n\nhttp://cv.jenkins.couchbase.com/job/kv_engine-clang_format/19686/ : SUCCESS\n\nhttp://cv.jenkins.couchbase.com/job/kv-engine-cv-perf/12059/ : SUCCESS\n\nhttp://cv.jenkins.couchbase.com/job/kv_engine-clang_analyzer-master/18745/ : SUCCESS\n\nhttp://cv.jenkins.couchbase.com/job/kv_engine-threadsanitizer-master/12847/ : SUCCESS\n\nhttp://cv.jenkins.couchbase.com/job/kv_engine-windows-master/21873/ : SUCCESS\n\nhttp://cv.jenkins.couchbase.com/job/kv_engine-linux-master/21052/ : SUCCESS\n\nhttp://cv.jenkins.couchbase.com/job/kv_engine-linux-master-CE/2711/ : SUCCESS\n\nhttp://cv.jenkins.couchbase.com/job/kv_engine.ASan-UBSan/job/master/5620/ : SUCCESS","accounts_in_message":[],"_revision_number":5},{"id":"3c1047ab2d70720e986aa07cf8c358781d7c6df9","tag":"autogenerated:gerrit:merged","author":{"_account_id":1001547,"name":"Dan Owen","email":"owend@couchbase.com","username":"owend","avatars":[{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2019-07-15 07:38:31.000000000","message":"Change has been successfully cherry-picked as 9378b9e327a98c23ebaad703ad181d1471ec5102 by Daniel Owen","accounts_in_message":[],"_revision_number":6},{"id":"3fd46f1efe9c15a1a6347035b664784c12b4f0d7","tag":"autogenerated:jenkins-gerrit-trigger","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":"2019-07-15 07:38:37.000000000","message":"Patch Set 6:\n\nBuild Started http://cv.jenkins.couchbase.com/job/kv_engine-master-post-commit/1736/","accounts_in_message":[],"_revision_number":6},{"id":"596a5df2bedefecb765783e7c693b06522a3e03b","tag":"autogenerated:jenkins-gerrit-trigger","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":"2019-07-15 08:09:23.000000000","message":"Patch Set 6:\n\nBuild Successful \n\nhttp://cv.jenkins.couchbase.com/job/kv_engine-master-post-commit/1736/ : SUCCESS\u0027","accounts_in_message":[],"_revision_number":6}],"current_revision_number":6,"current_revision":"9378b9e327a98c23ebaad703ad181d1471ec5102","revisions":{"35108702e3302e7bc7acdc35abb4b7d37604df0e":{"kind":"REWORK","_number":1,"created":"2019-07-12 10:39:05.000000000","uploader":{"_account_id":1003828,"name":"James H","email":"james.harrison@couchbase.com","username":"jameseh96","avatars":[{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/05/111905/1","fetch":{"anonymous http":{"url":"https://review.couchbase.org/kv_engine","ref":"refs/changes/05/111905/1","commands":{"Branch":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/1 \u0026\u0026 git checkout -b change-111905 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/kv_engine refs/changes/05/111905/1","Reset To":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/1 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"2e8f2272ffc5b7f6f462e6aa5499b950f8b2791a","subject":"Allow Monotonic to use custom types with to_string defined"}],"author":{"name":"James Harrison","email":"james.harrison@couchbase.com","date":"2019-07-12 10:35:13.000000000","tz":60},"committer":{"name":"James Harrison","email":"james.harrison@couchbase.com","date":"2019-07-12 10:38:26.000000000","tz":60},"subject":"MB-35049: Release StreamContainer rlock before calling Stream::setDead","message":"MB-35049: Release StreamContainer rlock before calling Stream::setDead\n\nTSan found lock inversion as DcpProducer::setDisconnect holds\n`StreamContainer-\u003erlock()` and then acquires `vb-\u003egetStateLock()`\nwhereas `VBucket::set()` acquires them in the opposite order.\n\nRelease the stream container lock before calling `Stream::setDead()` to\navoid holding both in the `setDisconnect` path.\n\nChange-Id: Ibb2ae11498c7226514bc18788778878bd6c87363\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"2e8f2272ffc5b7f6f462e6aa5499b950f8b2791a","is_merged_in_target_branch":true,"change_id":"Ibef1671f72adcec92fec2dcf28978583f2cadc14","change_number":111811,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/master"},"b734017a2da6bcb63ed2792ef34fc10e8da0d35e":{"kind":"NO_CODE_CHANGE","_number":2,"created":"2019-07-12 11:06:04.000000000","uploader":{"_account_id":1003828,"name":"James H","email":"james.harrison@couchbase.com","username":"jameseh96","avatars":[{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/05/111905/2","fetch":{"anonymous http":{"url":"https://review.couchbase.org/kv_engine","ref":"refs/changes/05/111905/2","commands":{"Branch":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/2 \u0026\u0026 git checkout -b change-111905 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/kv_engine refs/changes/05/111905/2","Reset To":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/2 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"2e8f2272ffc5b7f6f462e6aa5499b950f8b2791a","subject":"Allow Monotonic to use custom types with to_string defined"}],"author":{"name":"James Harrison","email":"james.harrison@couchbase.com","date":"2019-07-12 10:35:13.000000000","tz":60},"committer":{"name":"James Harrison","email":"james.harrison@couchbase.com","date":"2019-07-12 11:04:37.000000000","tz":60},"subject":"MB-35049: Release StreamContainer rlock before calling Stream::setDead","message":"MB-35049: Release StreamContainer rlock before calling Stream::setDead\n\nTSan found lock inversion as DcpProducer::setDisconnect holds\n`StreamContainer-\u003erlock()` and then acquires `vb-\u003egetStateLock()`\nwhereas `VBucket::set()` acquires them in the opposite order.\n\nRelease the stream container lock before calling `Stream::setDead()` to\navoid holding both in the `setDisconnect` path.\n\nTSan report:\n\n [ RUN      ] DurabilityTest.MB34780\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid\u003d10424)\n   Cycle in lock order graph: M4054 (0x7b68000308f8) \u003d\u003e M201671426334441480 (0x000000000000) \u003d\u003e M4054\n\n   Mutex M201671426334441480 acquired here while holding mutex M4054 in thread T7:\n     #0 pthread_rwlock_rdlock \u003cnull\u003e (libtsan.so.0+0x00000002953b)\n     #1 cb_rw_reader_enter(pthread_rwlock_t*) .../platform/src/cb_pthreads.cc:195 (libplatform_so.so.0.1.0+0x000000009cfa)\n     #2 cb::RWLock::readerLock() .../platform/include/platform/rwlock.h:87 (ep.so+0x0000000f4326)\n     #3 cb::RWLock::lock_shared() .../platform/include/platform/rwlock.h:67 (ep.so+0x00000012f2ba)\n     #4 std::shared_lock\u003ccb::RWLock\u003e::shared_lock(cb::RWLock\u0026) /usr/local/include/c++/7.3.0/shared_mutex:553 (ep.so+0x00000012f2ba)\n     #5 StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e::ReadLockedHandle::ReadLockedHandle(StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e const\u0026) .../kv_engine/engines/ep/src/dcp/stream_container.h:213 (ep.so+0x00000012f2ba)\n     #6 StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e::rlock() const .../kv_engine/engines/ep/src/dcp/stream_container.h:273 (ep.so+0x000000122ad5)\n     #7 DcpProducer::notifySeqnoAvailable(Vbid, unsigned long) .../kv_engine/engines/ep/src/dcp/producer.cc:1312 (ep.so+0x000000122ad5)\n     #8 DcpConnMap::notifyVBConnections(Vbid, unsigned long) .../kv_engine/engines/ep/src/dcp/dcpconnmap.cc:424 (ep.so+0x0000000fa0af)\n     #9 KVBucket::notifyReplication(Vbid, long) .../kv_engine/engines/ep/src/kv_bucket.cc:2570 (ep.so+0x00000020ed03)\n     #10 EPBucket::notifyNewSeqno(Vbid, VBNotifyCtx const\u0026) .../kv_engine/engines/ep/src/ep_bucket.cc:1327 (ep.so+0x000000160a95)\n     #11 NotifyNewSeqnoCB::callback(Vbid const\u0026, VBNotifyCtx const\u0026) .../kv_engine/engines/ep/src/kv_bucket.h:837 (ep.so+0x000000224dcb)\n     #12 VBucket::notifyNewSeqno(VBNotifyCtx const\u0026) .../kv_engine/engines/ep/src/vbucket.cc:3579 (ep.so+0x000000262f6b)\n     #13 VBucket::set(Item\u0026, void const*, EventuallyPersistentEngine\u0026, std::function\u003ccb::StoreIfStatus (boost::optional\u003citem_info\u003e const\u0026, cb::vbucket_info)\u003e, Collections::VB::Manifest::CachingReadHandle const\u0026) .../kv_engine/engines/ep/src/vbucket.cc:1569 (ep.so+0x00000026af3f)\n     #14 KVBucket::set(Item\u0026, void const*, std::function\u003ccb::StoreIfStatus (boost::optional\u003citem_info\u003e const\u0026, cb::vbucket_info)\u003e) .../kv_engine/engines/ep/src/kv_bucket.cc:692 (ep.so+0x00000021ee48)\n     #15 EventuallyPersistentEngine::storeIfInner(void const*, Item\u0026, unsigned long, ENGINE_STORE_OPERATION, std::function\u003ccb::StoreIfStatus (boost::optional\u003citem_info\u003e const\u0026, cb::vbucket_info)\u003e const\u0026) .../kv_engine/engines/ep/src/ep_engine.cc:2440 (ep.so+0x00000018071f)\n     #16 EventuallyPersistentEngine::store_if(gsl::not_null\u003cvoid const*\u003e, gsl::not_null\u003cvoid*\u003e, unsigned long, ENGINE_STORE_OPERATION, std::function\u003ccb::StoreIfStatus (boost::optional\u003citem_info\u003e const\u0026, cb::vbucket_info)\u003e const\u0026, boost::optional\u003ccb::durability::Requirements\u003e const\u0026, DocumentState) .../kv_engine/engines/ep/src/ep_engine.cc:376 (ep.so+0x000000180d02)\n     #17 bucket_store_if(Cookie\u0026, gsl::not_null\u003cvoid*\u003e, unsigned long, ENGINE_STORE_OPERATION, std::function\u003ccb::StoreIfStatus (boost::optional\u003citem_info\u003e const\u0026, cb::vbucket_info)\u003e, boost::optional\u003ccb::durability::Requirements\u003e, DocumentState) .../kv_engine/daemon/protocol/mcbp/engine_wrapper.cc:139 (memcached+0x00000048ab2e)\n     #18 MutationCommandContext::storeItem() .../kv_engine/daemon/protocol/mcbp/mutation_context.cc:296 (memcached+0x00000053bea1)\n     #19 MutationCommandContext::step() .../kv_engine/daemon/protocol/mcbp/mutation_context.cc:63 (memcached+0x00000053c124)\n     #20 SteppableCommandContext::drive() .../kv_engine/daemon/protocol/mcbp/steppable_command_context.cc:37 (memcached+0x00000054b362)\n     #21 add_set_replace_executor .../kv_engine/daemon/mcbp_executors.cc:170 (memcached+0x000000518375)\n     #22 set_executor .../kv_engine/daemon/mcbp_executors.cc:178 (memcached+0x0000005185d8)\n     #23 std::_Function_handler\u003cvoid (Cookie\u0026), void (*)(Cookie\u0026)\u003e::_M_invoke(std::_Any_data const\u0026, Cookie\u0026) /usr/local/include/c++/7.3.0/bits/std_function.h:316 (memcached+0x00000051da87)\n     #24 std::function\u003cvoid (Cookie\u0026)\u003e::operator()(Cookie\u0026) const /usr/local/include/c++/7.3.0/bits/std_function.h:706 (memcached+0x00000051de2d)\n     #25 execute_client_request_packet(Cookie\u0026, cb::mcbp::Request const\u0026) .../kv_engine/daemon/mcbp_executors.cc:850 (memcached+0x00000051d34c)\n     #26 execute_request_packet(Cookie\u0026, cb::mcbp::Request const\u0026) .../kv_engine/daemon/mcbp_executors.cc:874 (memcached+0x00000051d474)\n     #27 Cookie::execute() .../kv_engine/daemon/cookie.cc:124 (memcached+0x000000501ec2)\n     #28 StateMachine::conn_execute() .../kv_engine/daemon/statemachine.cc:410 (memcached+0x000000550b4f)\n     #29 StateMachine::execute() .../kv_engine/daemon/statemachine.cc:137 (memcached+0x000000552974)\n     #30 Connection::runStateMachinery() .../kv_engine/daemon/connection.cc:1340 (memcached+0x0000004e9ca5)\n     #31 Connection::runEventLoop(short) .../kv_engine/daemon/connection.cc:1414 (memcached+0x0000004e9d34)\n     #32 run_event_loop(Connection*, short) .../kv_engine/daemon/connections.cc:148 (memcached+0x0000004ffdca)\n     #33 event_handler(int, short, void*) .../kv_engine/daemon/memcached.cc:848 (memcached+0x00000043b328)\n     #34 event_persist_closure /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/libevent/libevent-prefix/src/libevent/event.c:1580 (libevent_core.so.2.1.8+0x000000017086)\n     #35 event_process_active_single_queue /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/libevent/libevent-prefix/src/libevent/event.c:1639 (libevent_core.so.2.1.8+0x000000017086)\n     #36 CouchbaseThread::run() .../platform/src/cb_pthreads.cc:58 (libplatform_so.so.0.1.0+0x000000009ad7)\n     #37 platform_thread_wrap .../platform/src/cb_pthreads.cc:71 (libplatform_so.so.0.1.0+0x000000009ad7)\n     #38 \u003cnull\u003e \u003cnull\u003e (libtsan.so.0+0x000000024feb)\n\n   Mutex M4054 previously acquired by the same thread here:\n     #0 AnnotateRWLockAcquired \u003cnull\u003e (libtsan.so.0+0x00000005b63d)\n     #1 folly::detail::annotate_rwlock_acquired_impl(void const volatile*, folly::annotate_rwlock_level, char const*, int) /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/synchronization/SanitizeThread.cpp:91 (memcached+0x0000006463de)\n     #2 annotate_rwlock_acquired .../build/tlm/deps/folly.exploded/include/folly/synchronization/SanitizeThread.h:99 (ep.so+0x00000021e932)\n     #3 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::annotateAcquired(folly::annotate_rwlock_level) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:696 (ep.so+0x00000021e932)\n     #4 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::lock_shared(folly::SharedMutexToken\u0026) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:376 (ep.so+0x00000021e932)\n     #5 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::ReadHolder::ReadHolder(folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e const\u0026) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:1315 (ep.so+0x00000021e932)\n     #6 KVBucket::set(Item\u0026, void const*, std::function\u003ccb::StoreIfStatus (boost::optional\u003citem_info\u003e const\u0026, cb::vbucket_info)\u003e) .../kv_engine/engines/ep/src/kv_bucket.cc:659 (ep.so+0x00000021e932)\n     #7 EventuallyPersistentEngine::storeIfInner(void const*, Item\u0026, unsigned long, ENGINE_STORE_OPERATION, std::function\u003ccb::StoreIfStatus (boost::optional\u003citem_info\u003e const\u0026, cb::vbucket_info)\u003e const\u0026) .../kv_engine/engines/ep/src/ep_engine.cc:2440 (ep.so+0x00000018071f)\n     #8 EventuallyPersistentEngine::store_if(gsl::not_null\u003cvoid const*\u003e, gsl::not_null\u003cvoid*\u003e, unsigned long, ENGINE_STORE_OPERATION, std::function\u003ccb::StoreIfStatus (boost::optional\u003citem_info\u003e const\u0026, cb::vbucket_info)\u003e const\u0026, boost::optional\u003ccb::durability::Requirements\u003e const\u0026, DocumentState) .../kv_engine/engines/ep/src/ep_engine.cc:376 (ep.so+0x000000180d02)\n     #9 bucket_store_if(Cookie\u0026, gsl::not_null\u003cvoid*\u003e, unsigned long, ENGINE_STORE_OPERATION, std::function\u003ccb::StoreIfStatus (boost::optional\u003citem_info\u003e const\u0026, cb::vbucket_info)\u003e, boost::optional\u003ccb::durability::Requirements\u003e, DocumentState) .../kv_engine/daemon/protocol/mcbp/engine_wrapper.cc:139 (memcached+0x00000048ab2e)\n     #10 MutationCommandContext::storeItem() .../kv_engine/daemon/protocol/mcbp/mutation_context.cc:296 (memcached+0x00000053bea1)\n     #11 MutationCommandContext::step() .../kv_engine/daemon/protocol/mcbp/mutation_context.cc:63 (memcached+0x00000053c124)\n     #12 SteppableCommandContext::drive() .../kv_engine/daemon/protocol/mcbp/steppable_command_context.cc:37 (memcached+0x00000054b362)\n     #13 add_set_replace_executor .../kv_engine/daemon/mcbp_executors.cc:170 (memcached+0x000000518375)\n     #14 set_executor .../kv_engine/daemon/mcbp_executors.cc:178 (memcached+0x0000005185d8)\n     #15 std::_Function_handler\u003cvoid (Cookie\u0026), void (*)(Cookie\u0026)\u003e::_M_invoke(std::_Any_data const\u0026, Cookie\u0026) /usr/local/include/c++/7.3.0/bits/std_function.h:316 (memcached+0x00000051da87)\n     #16 std::function\u003cvoid (Cookie\u0026)\u003e::operator()(Cookie\u0026) const /usr/local/include/c++/7.3.0/bits/std_function.h:706 (memcached+0x00000051de2d)\n     #17 execute_client_request_packet(Cookie\u0026, cb::mcbp::Request const\u0026) .../kv_engine/daemon/mcbp_executors.cc:850 (memcached+0x00000051d34c)\n     #18 execute_request_packet(Cookie\u0026, cb::mcbp::Request const\u0026) .../kv_engine/daemon/mcbp_executors.cc:874 (memcached+0x00000051d474)\n     #19 Cookie::execute() .../kv_engine/daemon/cookie.cc:124 (memcached+0x000000501ec2)\n     #20 StateMachine::conn_execute() .../kv_engine/daemon/statemachine.cc:410 (memcached+0x000000550b4f)\n     #21 StateMachine::execute() .../kv_engine/daemon/statemachine.cc:137 (memcached+0x000000552974)\n     #22 Connection::runStateMachinery() .../kv_engine/daemon/connection.cc:1340 (memcached+0x0000004e9ca5)\n     #23 Connection::runEventLoop(short) .../kv_engine/daemon/connection.cc:1414 (memcached+0x0000004e9d34)\n     #24 run_event_loop(Connection*, short) .../kv_engine/daemon/connections.cc:148 (memcached+0x0000004ffdca)\n     #25 event_handler(int, short, void*) .../kv_engine/daemon/memcached.cc:848 (memcached+0x00000043b328)\n     #26 event_persist_closure /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/libevent/libevent-prefix/src/libevent/event.c:1580 (libevent_core.so.2.1.8+0x000000017086)\n     #27 event_process_active_single_queue /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/libevent/libevent-prefix/src/libevent/event.c:1639 (libevent_core.so.2.1.8+0x000000017086)\n     #28 CouchbaseThread::run() .../platform/src/cb_pthreads.cc:58 (libplatform_so.so.0.1.0+0x000000009ad7)\n     #29 platform_thread_wrap .../platform/src/cb_pthreads.cc:71 (libplatform_so.so.0.1.0+0x000000009ad7)\n     #30 \u003cnull\u003e \u003cnull\u003e (libtsan.so.0+0x000000024feb)\n\n   Mutex M4054 acquired here while holding mutex M201671426334441480 in thread T5:\n     #0 AnnotateRWLockAcquired \u003cnull\u003e (libtsan.so.0+0x00000005b63d)\n     #1 folly::detail::annotate_rwlock_acquired_impl(void const volatile*, folly::annotate_rwlock_level, char const*, int) /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/synchronization/SanitizeThread.cpp:91 (memcached+0x0000006463de)\n     #2 annotate_rwlock_acquired .../build/tlm/deps/folly.exploded/include/folly/synchronization/SanitizeThread.h:99 (ep.so+0x0000000bb5b6)\n     #3 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::annotateAcquired(folly::annotate_rwlock_level) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:696 (ep.so+0x0000000bb5b6)\n     #4 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::lock_shared(folly::SharedMutexToken\u0026) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:376 (ep.so+0x0000000bb5b6)\n     #5 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::ReadHolder::ReadHolder(folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e const\u0026) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:1315 (ep.so+0x0000000bb5b6)\n     #6 ActiveStream::setDead(end_stream_status_t) .../kv_engine/engines/ep/src/dcp/active_stream.cc:1181 (ep.so+0x0000000bb5b6)\n     #7 operator() .../kv_engine/engines/ep/src/dcp/producer.cc:1491 (ep.so+0x0000001207df)\n     #8 for_each\u003cfolly::AtomicHashMap\u003cshort unsigned int, std::shared_ptr\u003cStreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e \u003e \u003e::ahm_iterator\u003cfolly::AtomicHashMap\u003cshort unsigned int, std::shared_ptr\u003cStreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e \u003e \u003e, std::pair\u003cshort unsigned int const, std::shared_ptr\u003cStreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e \u003e \u003e, folly::AtomicHashArray\u003cshort unsigned int, std::shared_ptr\u003cStreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e \u003e, std::hash\u003cshort unsigned int\u003e, std::equal_to\u003cshort unsigned int\u003e, std::allocator\u003cchar\u003e, folly::AtomicHashArrayLinearProbeFcn, folly::Identity\u003e::aha_iterator\u003cfolly::AtomicHashArray\u003cshort unsigned int, std::shared_ptr\u003cStreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e \u003e, std::hash\u003cshort unsigned int\u003e, std::equal_to\u003cshort unsigned int\u003e, std::allocator\u003cchar\u003e, folly::AtomicHashArrayLinearProbeFcn, folly::Identity\u003e, std::pair\u003cshort unsigned int const, std::shared_ptr\u003cStreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e \u003e \u003e \u003e \u003e, DcpProducer::setDisconnect()::\u003clambda(folly::AtomicHashMap\u003cshort unsigned int, std::shared_ptr\u003cStreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e \u003e \u003e::value_type\u0026)\u003e \u003e /usr/local/include/c++/7.3.0/bits/stl_algo.h:3884 (ep.so+0x0000001207df)\n     #9 DcpProducer::setDisconnect() .../kv_engine/engines/ep/src/dcp/producer.cc:1493 (ep.so+0x000000120b08)\n     #10 DcpConnMap::disconnect(void const*) .../kv_engine/engines/ep/src/dcp/dcpconnmap.cc:316 (ep.so+0x0000000fcc7d)\n     #11 EventuallyPersistentEngine::handleDisconnect(void const*) .../kv_engine/engines/ep/src/ep_engine.cc:5794 (ep.so+0x00000017e91a)\n     #12 EvpHandleDisconnect .../kv_engine/engines/ep/src/ep_engine.cc:1670 (ep.so+0x000000186682)\n     #13 perform_callbacks(ENGINE_EVENT_TYPE, void const*, void const*) .../kv_engine/daemon/memcached.cc:301 (memcached+0x0000004338d0)\n     #14 Connection::propagateDisconnect() const .../kv_engine/daemon/connection.cc:1534 (memcached+0x0000004d8d03)\n     #15 Connection::close() .../kv_engine/daemon/connection.cc:1515 (memcached+0x0000004e344f)\n     #16 StateMachine::conn_closing() .../kv_engine/daemon/statemachine.cc:572 (memcached+0x000000550aa1)\n     #17 StateMachine::execute() .../kv_engine/daemon/statemachine.cc:127 (memcached+0x000000552938)\n     #18 Connection::runStateMachinery() .../kv_engine/daemon/connection.cc:1340 (memcached+0x0000004e9ca5)\n     #19 Connection::runEventLoop(short) .../kv_engine/daemon/connection.cc:1414 (memcached+0x0000004e9d34)\n     #20 run_event_loop(Connection*, short) .../kv_engine/daemon/connections.cc:148 (memcached+0x0000004ffdca)\n     #21 thread_libevent_process .../kv_engine/daemon/thread.cc:340 (memcached+0x0000004b9424)\n     #22 event_persist_closure /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/libevent/libevent-prefix/src/libevent/event.c:1580 (libevent_core.so.2.1.8+0x000000017086)\n     #23 event_process_active_single_queue /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/libevent/libevent-prefix/src/libevent/event.c:1639 (libevent_core.so.2.1.8+0x000000017086)\n     #24 CouchbaseThread::run() .../platform/src/cb_pthreads.cc:58 (libplatform_so.so.0.1.0+0x000000009ad7)\n     #25 platform_thread_wrap .../platform/src/cb_pthreads.cc:71 (libplatform_so.so.0.1.0+0x000000009ad7)\n     #26 \u003cnull\u003e \u003cnull\u003e (libtsan.so.0+0x000000024feb)\n\n   Mutex M201671426334441480 previously acquired by the same thread here:\n     #0 pthread_rwlock_rdlock \u003cnull\u003e (libtsan.so.0+0x00000002953b)\n     #1 cb_rw_reader_enter(pthread_rwlock_t*) .../platform/src/cb_pthreads.cc:195 (libplatform_so.so.0.1.0+0x000000009cfa)\n     #2 cb::RWLock::readerLock() .../platform/include/platform/rwlock.h:87 (ep.so+0x0000001205e9)\n     #3 cb::RWLock::lock_shared() .../platform/include/platform/rwlock.h:67 (ep.so+0x0000001205e9)\n     #4 std::shared_lock\u003ccb::RWLock\u003e::shared_lock(cb::RWLock\u0026) /usr/local/include/c++/7.3.0/shared_mutex:553 (ep.so+0x0000001205e9)\n     #5 StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e::ReadLockedHandle::ReadLockedHandle(StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e const\u0026) .../kv_engine/engines/ep/src/dcp/stream_container.h:213 (ep.so+0x0000001205e9)\n     #6 StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e::rlock() const .../kv_engine/engines/ep/src/dcp/stream_container.h:273 (ep.so+0x0000001205e9)\n     #7 operator() .../kv_engine/engines/ep/src/dcp/producer.cc:1490 (ep.so+0x0000001205e9)\n     #8 for_each\u003cfolly::AtomicHashMap\u003cshort unsigned int, std::shared_ptr\u003cStreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e \u003e \u003e::ahm_iterator\u003cfolly::AtomicHashMap\u003cshort unsigned int, std::shared_ptr\u003cStreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e \u003e \u003e, std::pair\u003cshort unsigned int const, std::shared_ptr\u003cStreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e \u003e \u003e, folly::AtomicHashArray\u003cshort unsigned int, std::shared_ptr\u003cStreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e \u003e, std::hash\u003cshort unsigned int\u003e, std::equal_to\u003cshort unsigned int\u003e, std::allocator\u003cchar\u003e, folly::AtomicHashArrayLinearProbeFcn, folly::Identity\u003e::aha_iterator\u003cfolly::AtomicHashArray\u003cshort unsigned int, std::shared_ptr\u003cStreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e \u003e, std::hash\u003cshort unsigned int\u003e, std::equal_to\u003cshort unsigned int\u003e, std::allocator\u003cchar\u003e, folly::AtomicHashArrayLinearProbeFcn, folly::Identity\u003e, std::pair\u003cshort unsigned int const, std::shared_ptr\u003cStreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e \u003e \u003e \u003e \u003e, DcpProducer::setDisconnect()::\u003clambda(folly::AtomicHashMap\u003cshort unsigned int, std::shared_ptr\u003cStreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e \u003e \u003e::value_type\u0026)\u003e \u003e /usr/local/include/c++/7.3.0/bits/stl_algo.h:3884 (ep.so+0x0000001205e9)\n     #9 DcpProducer::setDisconnect() .../kv_engine/engines/ep/src/dcp/producer.cc:1493 (ep.so+0x000000120b08)\n     #10 DcpConnMap::disconnect(void const*) .../kv_engine/engines/ep/src/dcp/dcpconnmap.cc:316 (ep.so+0x0000000fcc7d)\n     #11 EventuallyPersistentEngine::handleDisconnect(void const*) .../kv_engine/engines/ep/src/ep_engine.cc:5794 (ep.so+0x00000017e91a)\n     #12 EvpHandleDisconnect .../kv_engine/engines/ep/src/ep_engine.cc:1670 (ep.so+0x000000186682)\n     #13 perform_callbacks(ENGINE_EVENT_TYPE, void const*, void const*) .../kv_engine/daemon/memcached.cc:301 (memcached+0x0000004338d0)\n     #14 Connection::propagateDisconnect() const .../kv_engine/daemon/connection.cc:1534 (memcached+0x0000004d8d03)\n     #15 Connection::close() .../kv_engine/daemon/connection.cc:1515 (memcached+0x0000004e344f)\n     #16 StateMachine::conn_closing() .../kv_engine/daemon/statemachine.cc:572 (memcached+0x000000550aa1)\n     #17 StateMachine::execute() .../kv_engine/daemon/statemachine.cc:127 (memcached+0x000000552938)\n     #18 Connection::runStateMachinery() .../kv_engine/daemon/connection.cc:1340 (memcached+0x0000004e9ca5)\n     #19 Connection::runEventLoop(short) .../kv_engine/daemon/connection.cc:1414 (memcached+0x0000004e9d34)\n     #20 run_event_loop(Connection*, short) .../kv_engine/daemon/connections.cc:148 (memcached+0x0000004ffdca)\n     #21 thread_libevent_process .../kv_engine/daemon/thread.cc:340 (memcached+0x0000004b9424)\n     #22 event_persist_closure /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/libevent/libevent-prefix/src/libevent/event.c:1580 (libevent_core.so.2.1.8+0x000000017086)\n     #23 event_process_active_single_queue /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/libevent/libevent-prefix/src/libevent/event.c:1639 (libevent_core.so.2.1.8+0x000000017086)\n     #24 CouchbaseThread::run() .../platform/src/cb_pthreads.cc:58 (libplatform_so.so.0.1.0+0x000000009ad7)\n     #25 platform_thread_wrap .../platform/src/cb_pthreads.cc:71 (libplatform_so.so.0.1.0+0x000000009ad7)\n     #26 \u003cnull\u003e \u003cnull\u003e (libtsan.so.0+0x000000024feb)\n\n   Thread T7 \u0027mc:worker_3\u0027 (tid\u003d10435, running) created by main thread at:\n     #0 pthread_create \u003cnull\u003e (libtsan.so.0+0x0000000282a0)\n     #1 cb_create_named_thread(unsigned long*, void (*)(void*), void*, int, char const*) .../platform/src/cb_pthreads.cc:109 (libplatform_so.so.0.1.0+0x000000009885)\n     #2 create_worker .../kv_engine/daemon/thread.cc:111 (memcached+0x0000004b7660)\n     #3 thread_init(unsigned long, event_base*, void (*)(int, short, void*)) .../kv_engine/daemon/thread.cc:460 (memcached+0x0000004b87f3)\n     #4 memcached_main .../kv_engine/daemon/memcached.cc:2479 (memcached+0x0000004405c2)\n     #5 main .../kv_engine/daemon/main.cc:33 (memcached+0x0000004314f5)\n\n   Thread T5 \u0027mc:worker_1\u0027 (tid\u003d10433, running) created by main thread at:\n     #0 pthread_create \u003cnull\u003e (libtsan.so.0+0x0000000282a0)\n     #1 cb_create_named_thread(unsigned long*, void (*)(void*), void*, int, char const*) .../platform/src/cb_pthreads.cc:109 (libplatform_so.so.0.1.0+0x000000009885)\n     #2 create_worker .../kv_engine/daemon/thread.cc:111 (memcached+0x0000004b7660)\n     #3 thread_init(unsigned long, event_base*, void (*)(int, short, void*)) .../kv_engine/daemon/thread.cc:460 (memcached+0x0000004b87f3)\n     #4 memcached_main .../kv_engine/daemon/memcached.cc:2479 (memcached+0x0000004405c2)\n     #5 main .../kv_engine/daemon/main.cc:33 (memcached+0x0000004314f5)\n\n SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) (.../install/lib/libtsan.so.0+0x2953b) in pthread_rwlock_rdlock\n\nChange-Id: Ibb2ae11498c7226514bc18788778878bd6c87363\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"2e8f2272ffc5b7f6f462e6aa5499b950f8b2791a","is_merged_in_target_branch":true,"change_id":"Ibef1671f72adcec92fec2dcf28978583f2cadc14","change_number":111811,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/master"},"3dcad8b08fd2af85605b4d9d30c80e87dd5c233f":{"kind":"NO_CODE_CHANGE","_number":3,"created":"2019-07-12 11:32:50.000000000","uploader":{"_account_id":1003828,"name":"James H","email":"james.harrison@couchbase.com","username":"jameseh96","avatars":[{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/05/111905/3","fetch":{"anonymous http":{"url":"https://review.couchbase.org/kv_engine","ref":"refs/changes/05/111905/3","commands":{"Branch":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/3 \u0026\u0026 git checkout -b change-111905 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/kv_engine refs/changes/05/111905/3","Reset To":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/3 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"2e8f2272ffc5b7f6f462e6aa5499b950f8b2791a","subject":"Allow Monotonic to use custom types with to_string defined"}],"author":{"name":"James Harrison","email":"james.harrison@couchbase.com","date":"2019-07-12 10:35:13.000000000","tz":60},"committer":{"name":"James Harrison","email":"james.harrison@couchbase.com","date":"2019-07-12 11:25:54.000000000","tz":60},"subject":"MB-35049: Release StreamContainer rlock before calling Stream::setDead","message":"MB-35049: Release StreamContainer rlock before calling Stream::setDead\n\nTSan found lock inversion as DcpProducer::setDisconnect holds\n`StreamContainer-\u003erlock()` and then acquires `vb-\u003egetStateLock()`\nwhereas `VBucket::set()` acquires them in the opposite order.\n\nRelease the stream container lock before calling `Stream::setDead()` to\navoid holding both in the `setDisconnect` path.\n\nTSan report:\n\n [ RUN      ] DurabilityTest.MB34780\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid\u003d10424)\n   Cycle in lock order graph: M4054 (0x7b68000308f8) \u003d\u003e M201671426334441480 (0x000000000000) \u003d\u003e M4054\n\n   Mutex M201671426334441480 acquired here while holding mutex M4054 in thread T7:\n     #0 pthread_rwlock_rdlock \u003cnull\u003e (libtsan.so.0+0x00000002953b)\n     #1 cb_rw_reader_enter(pthread_rwlock_t*) .../platform/src/cb_pthreads.cc:195 (libplatform_so.so.0.1.0+0x000000009cfa)\n     #2 cb::RWLock::readerLock() .../platform/include/platform/rwlock.h:87 (ep.so+0x0000000f4326)\n     #3 cb::RWLock::lock_shared() .../platform/include/platform/rwlock.h:67 (ep.so+0x00000012f2ba)\n     #4 std::shared_lock\u003ccb::RWLock\u003e::shared_lock(cb::RWLock\u0026) /usr/local/include/c++/7.3.0/shared_mutex:553 (ep.so+0x00000012f2ba)\n     #5 StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e::ReadLockedHandle::ReadLockedHandle(...) .../kv_engine/engines/ep/src/dcp/stream_container.h:213 (ep.so+0x00000012f2ba)\n     #6 StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e::rlock() const .../kv_engine/engines/ep/src/dcp/stream_container.h:273 (ep.so+0x000000122ad5)\n     #7 DcpProducer::notifySeqnoAvailable(Vbid, unsigned long) .../kv_engine/engines/ep/src/dcp/producer.cc:1312 (ep.so+0x000000122ad5)\n     #8 DcpConnMap::notifyVBConnections(Vbid, unsigned long) .../kv_engine/engines/ep/src/dcp/dcpconnmap.cc:424 (ep.so+0x0000000fa0af)\n     #9 KVBucket::notifyReplication(Vbid, long) .../kv_engine/engines/ep/src/kv_bucket.cc:2570 (ep.so+0x00000020ed03)\n     #10 EPBucket::notifyNewSeqno(Vbid, VBNotifyCtx const\u0026) .../kv_engine/engines/ep/src/ep_bucket.cc:1327 (ep.so+0x000000160a95)\n     #11 NotifyNewSeqnoCB::callback(Vbid const\u0026, VBNotifyCtx const\u0026) .../kv_engine/engines/ep/src/kv_bucket.h:837 (ep.so+0x000000224dcb)\n     #12 VBucket::notifyNewSeqno(VBNotifyCtx const\u0026) .../kv_engine/engines/ep/src/vbucket.cc:3579 (ep.so+0x000000262f6b)\n     #13 VBucket::set(...) .../kv_engine/engines/ep/src/vbucket.cc:1569 (ep.so+0x00000026af3f)\n     #14 KVBucket::set(...) .../kv_engine/engines/ep/src/kv_bucket.cc:692 (ep.so+0x00000021ee48)\n\n   Mutex M4054 previously acquired by the same thread here:\n     #0 AnnotateRWLockAcquired \u003cnull\u003e (libtsan.so.0+0x00000005b63d)\n     #1 folly::detail::annotate_rwlock_acquired_impl(...) .../follytsan/folly/synchronization/SanitizeThread.cpp:91 (memcached+0x0000006463de)\n     #2 annotate_rwlock_acquired .../build/tlm/deps/folly.exploded/include/folly/synchronization/SanitizeThread.h:99 (ep.so+0x00000021e932)\n     #3 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::annotateAcquired(folly::annotate_rwlock_level) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:696 (ep.so+0x00000021e932)\n     #4 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::lock_shared(folly::SharedMutexToken\u0026) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:376 (ep.so+0x00000021e932)\n     #5 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::ReadHolder::ReadHolder(folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e const\u0026) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:1315 (ep.so+0x00000021e932)\n     #6 KVBucket::set(...) .../kv_engine/engines/ep/src/kv_bucket.cc:659 (ep.so+0x00000021e932)\n\n   Mutex M4054 acquired here while holding mutex M201671426334441480 in thread T5:\n     #0 AnnotateRWLockAcquired \u003cnull\u003e (libtsan.so.0+0x00000005b63d)\n     #1 folly::detail::annotate_rwlock_acquired_impl(void const volatile*, folly::annotate_rwlock_level, char const*, int) .../follytsan/folly/synchronization/SanitizeThread.cpp:91 (memcached+0x0000006463de)\n     #2 annotate_rwlock_acquired .../build/tlm/deps/folly.exploded/include/folly/synchronization/SanitizeThread.h:99 (ep.so+0x0000000bb5b6)\n     #3 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::annotateAcquired(folly::annotate_rwlock_level) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:696 (ep.so+0x0000000bb5b6)\n     #4 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::lock_shared(folly::SharedMutexToken\u0026) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:376 (ep.so+0x0000000bb5b6)\n     #5 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::ReadHolder::ReadHolder(...) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:1315 (ep.so+0x0000000bb5b6)\n     #6 ActiveStream::setDead(end_stream_status_t) .../kv_engine/engines/ep/src/dcp/active_stream.cc:1181 (ep.so+0x0000000bb5b6)\n     #7 operator() .../kv_engine/engines/ep/src/dcp/producer.cc:1491 (ep.so+0x0000001207df)\n     #8 for_each\u003c..., DcpProducer::setDisconnect()::\u003clambda(folly::AtomicHashMap\u003c...\u003e::value_type\u0026)\u003e \u003e /usr/local/include/c++/7.3.0/bits/stl_algo.h:3884 (ep.so+0x0000001207df)\n     #9 DcpProducer::setDisconnect() .../kv_engine/engines/ep/src/dcp/producer.cc:1493 (ep.so+0x000000120b08)\n\n   Mutex M201671426334441480 previously acquired by the same thread here:\n     #0 pthread_rwlock_rdlock \u003cnull\u003e (libtsan.so.0+0x00000002953b)\n     #1 cb_rw_reader_enter(pthread_rwlock_t*) .../platform/src/cb_pthreads.cc:195 (libplatform_so.so.0.1.0+0x000000009cfa)\n     #2 cb::RWLock::readerLock() .../platform/include/platform/rwlock.h:87 (ep.so+0x0000001205e9)\n     #3 cb::RWLock::lock_shared() .../platform/include/platform/rwlock.h:67 (ep.so+0x0000001205e9)\n     #4 std::shared_lock\u003ccb::RWLock\u003e::shared_lock(cb::RWLock\u0026) /usr/local/include/c++/7.3.0/shared_mutex:553 (ep.so+0x0000001205e9)\n     #5 StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e::ReadLockedHandle::ReadLockedHandle(StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e const\u0026) .../kv_engine/engines/ep/src/dcp/stream_container.h:213 (ep.so+0x0000001205e9)\n     #6 StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e::rlock() const .../kv_engine/engines/ep/src/dcp/stream_container.h:273 (ep.so+0x0000001205e9)\n     #7 operator() .../kv_engine/engines/ep/src/dcp/producer.cc:1490 (ep.so+0x0000001205e9)\n     #8 for_each\u003c..., DcpProducer::setDisconnect()::\u003clambda(folly::AtomicHashMap\u003c...\u003e::value_type\u0026)\u003e \u003e /usr/local/include/c++/7.3.0/bits/stl_algo.h:3884 (ep.so+0x0000001207df)\n     #9 DcpProducer::setDisconnect() .../kv_engine/engines/ep/src/dcp/producer.cc:1493 (ep.so+0x000000120b08)\n\nChange-Id: Ibb2ae11498c7226514bc18788778878bd6c87363\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"2e8f2272ffc5b7f6f462e6aa5499b950f8b2791a","is_merged_in_target_branch":true,"change_id":"Ibef1671f72adcec92fec2dcf28978583f2cadc14","change_number":111811,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/master"},"a89a2a875cf8a263a3a8ee90ef9f26d1f591ac86":{"kind":"NO_CODE_CHANGE","_number":4,"created":"2019-07-12 11:40:54.000000000","uploader":{"_account_id":1003828,"name":"James H","email":"james.harrison@couchbase.com","username":"jameseh96","avatars":[{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/05/111905/4","fetch":{"anonymous http":{"url":"https://review.couchbase.org/kv_engine","ref":"refs/changes/05/111905/4","commands":{"Branch":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/4 \u0026\u0026 git checkout -b change-111905 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/kv_engine refs/changes/05/111905/4","Reset To":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/4 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"2e8f2272ffc5b7f6f462e6aa5499b950f8b2791a","subject":"Allow Monotonic to use custom types with to_string defined"}],"author":{"name":"James Harrison","email":"james.harrison@couchbase.com","date":"2019-07-12 10:35:13.000000000","tz":60},"committer":{"name":"James Harrison","email":"james.harrison@couchbase.com","date":"2019-07-12 10:35:13.000000000","tz":60},"subject":"MB-35049: Release StreamContainer rlock before calling Stream::setDead","message":"MB-35049: Release StreamContainer rlock before calling Stream::setDead\n\nTSan found lock inversion as DcpProducer::setDisconnect holds\n`StreamContainer-\u003erlock()` and then acquires `vb-\u003egetStateLock()`\nwhereas `VBucket::set()` acquires them in the opposite order.\n\nRelease the stream container lock before calling `Stream::setDead()` to\navoid holding both in the `setDisconnect` path.\n\nTSan report:\n\n [ RUN      ] DurabilityTest.MB34780\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid\u003d10424)\n   Cycle in lock order graph: M4054 (0x7b68000308f8) \u003d\u003e M201671426334441480 (0x000000000000) \u003d\u003e M4054\n\n   Mutex M201671426334441480 acquired here while holding mutex M4054 in thread T7:\n     #0 pthread_rwlock_rdlock \u003cnull\u003e (libtsan.so.0+0x00000002953b)\n     #1 cb_rw_reader_enter(pthread_rwlock_t*) .../platform/src/cb_pthreads.cc:195 (libplatform_so.so.0.1.0+0x000000009cfa)\n     #2 cb::RWLock::readerLock() .../platform/include/platform/rwlock.h:87 (ep.so+0x0000000f4326)\n     #3 cb::RWLock::lock_shared() .../platform/include/platform/rwlock.h:67 (ep.so+0x00000012f2ba)\n     #4 std::shared_lock\u003ccb::RWLock\u003e::shared_lock(cb::RWLock\u0026) /usr/local/include/c++/7.3.0/shared_mutex:553 (ep.so+0x00000012f2ba)\n     #5 StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e::ReadLockedHandle::ReadLockedHandle(...) .../kv_engine/engines/ep/src/dcp/stream_container.h:213 (ep.so+0x00000012f2ba)\n     #6 StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e::rlock() const .../kv_engine/engines/ep/src/dcp/stream_container.h:273 (ep.so+0x000000122ad5)\n     #7 DcpProducer::notifySeqnoAvailable(Vbid, unsigned long) .../kv_engine/engines/ep/src/dcp/producer.cc:1312 (ep.so+0x000000122ad5)\n     #8 DcpConnMap::notifyVBConnections(Vbid, unsigned long) .../kv_engine/engines/ep/src/dcp/dcpconnmap.cc:424 (ep.so+0x0000000fa0af)\n     #9 KVBucket::notifyReplication(Vbid, long) .../kv_engine/engines/ep/src/kv_bucket.cc:2570 (ep.so+0x00000020ed03)\n     #10 EPBucket::notifyNewSeqno(Vbid, VBNotifyCtx const\u0026) .../kv_engine/engines/ep/src/ep_bucket.cc:1327 (ep.so+0x000000160a95)\n     #11 NotifyNewSeqnoCB::callback(Vbid const\u0026, VBNotifyCtx const\u0026) .../kv_engine/engines/ep/src/kv_bucket.h:837 (ep.so+0x000000224dcb)\n     #12 VBucket::notifyNewSeqno(VBNotifyCtx const\u0026) .../kv_engine/engines/ep/src/vbucket.cc:3579 (ep.so+0x000000262f6b)\n     #13 VBucket::set(...) .../kv_engine/engines/ep/src/vbucket.cc:1569 (ep.so+0x00000026af3f)\n     #14 KVBucket::set(...) .../kv_engine/engines/ep/src/kv_bucket.cc:692 (ep.so+0x00000021ee48)\n     #15 EventuallyPersistentEngine::storeIfInner(...) .../kv_engine/engines/ep/src/ep_engine.cc:2440 (ep.so+0x00000018071f)\n\n   Mutex M4054 previously acquired by the same thread here:\n     #0 AnnotateRWLockAcquired \u003cnull\u003e (libtsan.so.0+0x00000005b63d)\n     #1 folly::detail::annotate_rwlock_acquired_impl(...) .../follytsan/folly/synchronization/SanitizeThread.cpp:91 (memcached+0x0000006463de)\n     #2 annotate_rwlock_acquired .../build/tlm/deps/folly.exploded/include/folly/synchronization/SanitizeThread.h:99 (ep.so+0x00000021e932)\n     #3 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::annotateAcquired(folly::annotate_rwlock_level) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:696 (ep.so+0x00000021e932)\n     #4 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::lock_shared(folly::SharedMutexToken\u0026) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:376 (ep.so+0x00000021e932)\n     #5 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::ReadHolder::ReadHolder(folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e const\u0026) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:1315 (ep.so+0x00000021e932)\n     #6 KVBucket::set(...) .../kv_engine/engines/ep/src/kv_bucket.cc:659 (ep.so+0x00000021e932)\n     #7 EventuallyPersistentEngine::storeIfInner(...)\u003e const\u0026) .../kv_engine/engines/ep/src/ep_engine.cc:2440 (ep.so+0x00000018071f)\n\n   Mutex M4054 acquired here while holding mutex M201671426334441480 in thread T5:\n     #0 AnnotateRWLockAcquired \u003cnull\u003e (libtsan.so.0+0x00000005b63d)\n     #1 folly::detail::annotate_rwlock_acquired_impl(void const volatile*, folly::annotate_rwlock_level, char const*, int) .../follytsan/folly/synchronization/SanitizeThread.cpp:91 (memcached+0x0000006463de)\n     #2 annotate_rwlock_acquired .../build/tlm/deps/folly.exploded/include/folly/synchronization/SanitizeThread.h:99 (ep.so+0x0000000bb5b6)\n     #3 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::annotateAcquired(folly::annotate_rwlock_level) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:696 (ep.so+0x0000000bb5b6)\n     #4 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::lock_shared(folly::SharedMutexToken\u0026) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:376 (ep.so+0x0000000bb5b6)\n     #5 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::ReadHolder::ReadHolder(...) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:1315 (ep.so+0x0000000bb5b6)\n     #6 ActiveStream::setDead(end_stream_status_t) .../kv_engine/engines/ep/src/dcp/active_stream.cc:1181 (ep.so+0x0000000bb5b6)\n     #7 operator() .../kv_engine/engines/ep/src/dcp/producer.cc:1491 (ep.so+0x0000001207df)\n     #8 for_each\u003c..., DcpProducer::setDisconnect()::\u003clambda(folly::AtomicHashMap\u003c...\u003e::value_type\u0026)\u003e \u003e /usr/local/include/c++/7.3.0/bits/stl_algo.h:3884 (ep.so+0x0000001207df)\n     #9 DcpProducer::setDisconnect() .../kv_engine/engines/ep/src/dcp/producer.cc:1493 (ep.so+0x000000120b08)\n\n   Mutex M201671426334441480 previously acquired by the same thread here:\n     #0 pthread_rwlock_rdlock \u003cnull\u003e (libtsan.so.0+0x00000002953b)\n     #1 cb_rw_reader_enter(pthread_rwlock_t*) .../platform/src/cb_pthreads.cc:195 (libplatform_so.so.0.1.0+0x000000009cfa)\n     #2 cb::RWLock::readerLock() .../platform/include/platform/rwlock.h:87 (ep.so+0x0000001205e9)\n     #3 cb::RWLock::lock_shared() .../platform/include/platform/rwlock.h:67 (ep.so+0x0000001205e9)\n     #4 std::shared_lock\u003ccb::RWLock\u003e::shared_lock(cb::RWLock\u0026) /usr/local/include/c++/7.3.0/shared_mutex:553 (ep.so+0x0000001205e9)\n     #5 StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e::ReadLockedHandle::ReadLockedHandle(StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e const\u0026) .../kv_engine/engines/ep/src/dcp/stream_container.h:213 (ep.so+0x0000001205e9)\n     #6 StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e::rlock() const .../kv_engine/engines/ep/src/dcp/stream_container.h:273 (ep.so+0x0000001205e9)\n     #7 operator() .../kv_engine/engines/ep/src/dcp/producer.cc:1490 (ep.so+0x0000001205e9)\n     #8 for_each\u003c..., DcpProducer::setDisconnect()::\u003clambda(folly::AtomicHashMap\u003c...\u003e::value_type\u0026)\u003e \u003e /usr/local/include/c++/7.3.0/bits/stl_algo.h:3884 (ep.so+0x0000001207df)\n     #9 DcpProducer::setDisconnect() .../kv_engine/engines/ep/src/dcp/producer.cc:1493 (ep.so+0x000000120b08)\n\nChange-Id: Ibb2ae11498c7226514bc18788778878bd6c87363\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"2e8f2272ffc5b7f6f462e6aa5499b950f8b2791a","is_merged_in_target_branch":true,"change_id":"Ibef1671f72adcec92fec2dcf28978583f2cadc14","change_number":111811,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/master"},"478079e7183808f6b7b9dc484ec8bf1930f7612f":{"kind":"TRIVIAL_REBASE","_number":5,"created":"2019-07-12 13:17:36.000000000","uploader":{"_account_id":1003828,"name":"James H","email":"james.harrison@couchbase.com","username":"jameseh96","avatars":[{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/70d2875f461e17e71a2a16972681c794.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/05/111905/5","fetch":{"anonymous http":{"url":"https://review.couchbase.org/kv_engine","ref":"refs/changes/05/111905/5","commands":{"Branch":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/5 \u0026\u0026 git checkout -b change-111905 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/kv_engine refs/changes/05/111905/5","Reset To":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/5 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"1c083035df1154da71de7573a7c83211d7b3df7b","subject":"Refactor: Capture vbucket id in DurabilityMonitor throw messages"}],"author":{"name":"James Harrison","email":"james.harrison@couchbase.com","date":"2019-07-12 10:35:13.000000000","tz":60},"committer":{"name":"James Harrison","email":"james.harrison@couchbase.com","date":"2019-07-12 13:07:38.000000000","tz":60},"subject":"MB-35049: Release StreamContainer rlock before calling Stream::setDead","message":"MB-35049: Release StreamContainer rlock before calling Stream::setDead\n\nTSan found lock inversion as DcpProducer::setDisconnect holds\n`StreamContainer-\u003erlock()` and then acquires `vb-\u003egetStateLock()`\nwhereas `VBucket::set()` acquires them in the opposite order.\n\nRelease the stream container lock before calling `Stream::setDead()` to\navoid holding both in the `setDisconnect` path.\n\nTSan report:\n\n [ RUN      ] DurabilityTest.MB34780\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid\u003d10424)\n   Cycle in lock order graph: M4054 (0x7b68000308f8) \u003d\u003e M201671426334441480 (0x000000000000) \u003d\u003e M4054\n\n   Mutex M201671426334441480 acquired here while holding mutex M4054 in thread T7:\n     #0 pthread_rwlock_rdlock \u003cnull\u003e (libtsan.so.0+0x00000002953b)\n     #1 cb_rw_reader_enter(pthread_rwlock_t*) .../platform/src/cb_pthreads.cc:195 (libplatform_so.so.0.1.0+0x000000009cfa)\n     #2 cb::RWLock::readerLock() .../platform/include/platform/rwlock.h:87 (ep.so+0x0000000f4326)\n     #3 cb::RWLock::lock_shared() .../platform/include/platform/rwlock.h:67 (ep.so+0x00000012f2ba)\n     #4 std::shared_lock\u003ccb::RWLock\u003e::shared_lock(cb::RWLock\u0026) /usr/local/include/c++/7.3.0/shared_mutex:553 (ep.so+0x00000012f2ba)\n     #5 StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e::ReadLockedHandle::ReadLockedHandle(...) .../kv_engine/engines/ep/src/dcp/stream_container.h:213 (ep.so+0x00000012f2ba)\n     #6 StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e::rlock() const .../kv_engine/engines/ep/src/dcp/stream_container.h:273 (ep.so+0x000000122ad5)\n     #7 DcpProducer::notifySeqnoAvailable(Vbid, unsigned long) .../kv_engine/engines/ep/src/dcp/producer.cc:1312 (ep.so+0x000000122ad5)\n     #8 DcpConnMap::notifyVBConnections(Vbid, unsigned long) .../kv_engine/engines/ep/src/dcp/dcpconnmap.cc:424 (ep.so+0x0000000fa0af)\n     #9 KVBucket::notifyReplication(Vbid, long) .../kv_engine/engines/ep/src/kv_bucket.cc:2570 (ep.so+0x00000020ed03)\n     #10 EPBucket::notifyNewSeqno(Vbid, VBNotifyCtx const\u0026) .../kv_engine/engines/ep/src/ep_bucket.cc:1327 (ep.so+0x000000160a95)\n     #11 NotifyNewSeqnoCB::callback(Vbid const\u0026, VBNotifyCtx const\u0026) .../kv_engine/engines/ep/src/kv_bucket.h:837 (ep.so+0x000000224dcb)\n     #12 VBucket::notifyNewSeqno(VBNotifyCtx const\u0026) .../kv_engine/engines/ep/src/vbucket.cc:3579 (ep.so+0x000000262f6b)\n     #13 VBucket::set(...) .../kv_engine/engines/ep/src/vbucket.cc:1569 (ep.so+0x00000026af3f)\n     #14 KVBucket::set(...) .../kv_engine/engines/ep/src/kv_bucket.cc:692 (ep.so+0x00000021ee48)\n     #15 EventuallyPersistentEngine::storeIfInner(...) .../kv_engine/engines/ep/src/ep_engine.cc:2440 (ep.so+0x00000018071f)\n\n   Mutex M4054 previously acquired by the same thread here:\n     #0 AnnotateRWLockAcquired \u003cnull\u003e (libtsan.so.0+0x00000005b63d)\n     #1 folly::detail::annotate_rwlock_acquired_impl(...) .../follytsan/folly/synchronization/SanitizeThread.cpp:91 (memcached+0x0000006463de)\n     #2 annotate_rwlock_acquired .../build/tlm/deps/folly.exploded/include/folly/synchronization/SanitizeThread.h:99 (ep.so+0x00000021e932)\n     #3 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::annotateAcquired(folly::annotate_rwlock_level) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:696 (ep.so+0x00000021e932)\n     #4 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::lock_shared(folly::SharedMutexToken\u0026) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:376 (ep.so+0x00000021e932)\n     #5 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::ReadHolder::ReadHolder(folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e const\u0026) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:1315 (ep.so+0x00000021e932)\n     #6 KVBucket::set(...) .../kv_engine/engines/ep/src/kv_bucket.cc:659 (ep.so+0x00000021e932)\n     #7 EventuallyPersistentEngine::storeIfInner(...)\u003e const\u0026) .../kv_engine/engines/ep/src/ep_engine.cc:2440 (ep.so+0x00000018071f)\n\n   Mutex M4054 acquired here while holding mutex M201671426334441480 in thread T5:\n     #0 AnnotateRWLockAcquired \u003cnull\u003e (libtsan.so.0+0x00000005b63d)\n     #1 folly::detail::annotate_rwlock_acquired_impl(void const volatile*, folly::annotate_rwlock_level, char const*, int) .../follytsan/folly/synchronization/SanitizeThread.cpp:91 (memcached+0x0000006463de)\n     #2 annotate_rwlock_acquired .../build/tlm/deps/folly.exploded/include/folly/synchronization/SanitizeThread.h:99 (ep.so+0x0000000bb5b6)\n     #3 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::annotateAcquired(folly::annotate_rwlock_level) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:696 (ep.so+0x0000000bb5b6)\n     #4 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::lock_shared(folly::SharedMutexToken\u0026) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:376 (ep.so+0x0000000bb5b6)\n     #5 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::ReadHolder::ReadHolder(...) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:1315 (ep.so+0x0000000bb5b6)\n     #6 ActiveStream::setDead(end_stream_status_t) .../kv_engine/engines/ep/src/dcp/active_stream.cc:1181 (ep.so+0x0000000bb5b6)\n     #7 operator() .../kv_engine/engines/ep/src/dcp/producer.cc:1491 (ep.so+0x0000001207df)\n     #8 for_each\u003c..., DcpProducer::setDisconnect()::\u003clambda(folly::AtomicHashMap\u003c...\u003e::value_type\u0026)\u003e \u003e /usr/local/include/c++/7.3.0/bits/stl_algo.h:3884 (ep.so+0x0000001207df)\n     #9 DcpProducer::setDisconnect() .../kv_engine/engines/ep/src/dcp/producer.cc:1493 (ep.so+0x000000120b08)\n\n   Mutex M201671426334441480 previously acquired by the same thread here:\n     #0 pthread_rwlock_rdlock \u003cnull\u003e (libtsan.so.0+0x00000002953b)\n     #1 cb_rw_reader_enter(pthread_rwlock_t*) .../platform/src/cb_pthreads.cc:195 (libplatform_so.so.0.1.0+0x000000009cfa)\n     #2 cb::RWLock::readerLock() .../platform/include/platform/rwlock.h:87 (ep.so+0x0000001205e9)\n     #3 cb::RWLock::lock_shared() .../platform/include/platform/rwlock.h:67 (ep.so+0x0000001205e9)\n     #4 std::shared_lock\u003ccb::RWLock\u003e::shared_lock(cb::RWLock\u0026) /usr/local/include/c++/7.3.0/shared_mutex:553 (ep.so+0x0000001205e9)\n     #5 StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e::ReadLockedHandle::ReadLockedHandle(StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e const\u0026) .../kv_engine/engines/ep/src/dcp/stream_container.h:213 (ep.so+0x0000001205e9)\n     #6 StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e::rlock() const .../kv_engine/engines/ep/src/dcp/stream_container.h:273 (ep.so+0x0000001205e9)\n     #7 operator() .../kv_engine/engines/ep/src/dcp/producer.cc:1490 (ep.so+0x0000001205e9)\n     #8 for_each\u003c..., DcpProducer::setDisconnect()::\u003clambda(folly::AtomicHashMap\u003c...\u003e::value_type\u0026)\u003e \u003e /usr/local/include/c++/7.3.0/bits/stl_algo.h:3884 (ep.so+0x0000001207df)\n     #9 DcpProducer::setDisconnect() .../kv_engine/engines/ep/src/dcp/producer.cc:1493 (ep.so+0x000000120b08)\n\nChange-Id: Ibb2ae11498c7226514bc18788778878bd6c87363\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"1c083035df1154da71de7573a7c83211d7b3df7b","is_merged_in_target_branch":true,"change_id":"I53268f82899a1db3f51db1efa45b7dcd8dc29b9e","change_number":111860,"patch_set_number":6,"change_status":"MERGED"}],"branch":"refs/heads/master"},"9378b9e327a98c23ebaad703ad181d1471ec5102":{"kind":"NO_CODE_CHANGE","_number":6,"created":"2019-07-15 07:38:31.000000000","uploader":{"_account_id":1001547,"name":"Dan Owen","email":"owend@couchbase.com","username":"owend","avatars":[{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0761a726bc37606caee7ec6bf566deca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/05/111905/6","fetch":{"anonymous http":{"url":"https://review.couchbase.org/kv_engine","ref":"refs/changes/05/111905/6","commands":{"Branch":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/6 \u0026\u0026 git checkout -b change-111905 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/kv_engine refs/changes/05/111905/6","Reset To":"git fetch https://review.couchbase.org/kv_engine refs/changes/05/111905/6 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"1c083035df1154da71de7573a7c83211d7b3df7b","subject":"Refactor: Capture vbucket id in DurabilityMonitor throw messages"}],"author":{"name":"James Harrison","email":"james.harrison@couchbase.com","date":"2019-07-12 10:35:13.000000000","tz":60},"committer":{"name":"Daniel Owen","email":"owend@couchbase.com","date":"2019-07-15 07:38:31.000000000","tz":0},"subject":"MB-35049: Release StreamContainer rlock before calling Stream::setDead","message":"MB-35049: Release StreamContainer rlock before calling Stream::setDead\n\nTSan found lock inversion as DcpProducer::setDisconnect holds\n`StreamContainer-\u003erlock()` and then acquires `vb-\u003egetStateLock()`\nwhereas `VBucket::set()` acquires them in the opposite order.\n\nRelease the stream container lock before calling `Stream::setDead()` to\navoid holding both in the `setDisconnect` path.\n\nTSan report:\n\n [ RUN      ] DurabilityTest.MB34780\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid\u003d10424)\n   Cycle in lock order graph: M4054 (0x7b68000308f8) \u003d\u003e M201671426334441480 (0x000000000000) \u003d\u003e M4054\n\n   Mutex M201671426334441480 acquired here while holding mutex M4054 in thread T7:\n     #0 pthread_rwlock_rdlock \u003cnull\u003e (libtsan.so.0+0x00000002953b)\n     #1 cb_rw_reader_enter(pthread_rwlock_t*) .../platform/src/cb_pthreads.cc:195 (libplatform_so.so.0.1.0+0x000000009cfa)\n     #2 cb::RWLock::readerLock() .../platform/include/platform/rwlock.h:87 (ep.so+0x0000000f4326)\n     #3 cb::RWLock::lock_shared() .../platform/include/platform/rwlock.h:67 (ep.so+0x00000012f2ba)\n     #4 std::shared_lock\u003ccb::RWLock\u003e::shared_lock(cb::RWLock\u0026) /usr/local/include/c++/7.3.0/shared_mutex:553 (ep.so+0x00000012f2ba)\n     #5 StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e::ReadLockedHandle::ReadLockedHandle(...) .../kv_engine/engines/ep/src/dcp/stream_container.h:213 (ep.so+0x00000012f2ba)\n     #6 StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e::rlock() const .../kv_engine/engines/ep/src/dcp/stream_container.h:273 (ep.so+0x000000122ad5)\n     #7 DcpProducer::notifySeqnoAvailable(Vbid, unsigned long) .../kv_engine/engines/ep/src/dcp/producer.cc:1312 (ep.so+0x000000122ad5)\n     #8 DcpConnMap::notifyVBConnections(Vbid, unsigned long) .../kv_engine/engines/ep/src/dcp/dcpconnmap.cc:424 (ep.so+0x0000000fa0af)\n     #9 KVBucket::notifyReplication(Vbid, long) .../kv_engine/engines/ep/src/kv_bucket.cc:2570 (ep.so+0x00000020ed03)\n     #10 EPBucket::notifyNewSeqno(Vbid, VBNotifyCtx const\u0026) .../kv_engine/engines/ep/src/ep_bucket.cc:1327 (ep.so+0x000000160a95)\n     #11 NotifyNewSeqnoCB::callback(Vbid const\u0026, VBNotifyCtx const\u0026) .../kv_engine/engines/ep/src/kv_bucket.h:837 (ep.so+0x000000224dcb)\n     #12 VBucket::notifyNewSeqno(VBNotifyCtx const\u0026) .../kv_engine/engines/ep/src/vbucket.cc:3579 (ep.so+0x000000262f6b)\n     #13 VBucket::set(...) .../kv_engine/engines/ep/src/vbucket.cc:1569 (ep.so+0x00000026af3f)\n     #14 KVBucket::set(...) .../kv_engine/engines/ep/src/kv_bucket.cc:692 (ep.so+0x00000021ee48)\n     #15 EventuallyPersistentEngine::storeIfInner(...) .../kv_engine/engines/ep/src/ep_engine.cc:2440 (ep.so+0x00000018071f)\n\n   Mutex M4054 previously acquired by the same thread here:\n     #0 AnnotateRWLockAcquired \u003cnull\u003e (libtsan.so.0+0x00000005b63d)\n     #1 folly::detail::annotate_rwlock_acquired_impl(...) .../follytsan/folly/synchronization/SanitizeThread.cpp:91 (memcached+0x0000006463de)\n     #2 annotate_rwlock_acquired .../build/tlm/deps/folly.exploded/include/folly/synchronization/SanitizeThread.h:99 (ep.so+0x00000021e932)\n     #3 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::annotateAcquired(folly::annotate_rwlock_level) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:696 (ep.so+0x00000021e932)\n     #4 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::lock_shared(folly::SharedMutexToken\u0026) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:376 (ep.so+0x00000021e932)\n     #5 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::ReadHolder::ReadHolder(folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e const\u0026) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:1315 (ep.so+0x00000021e932)\n     #6 KVBucket::set(...) .../kv_engine/engines/ep/src/kv_bucket.cc:659 (ep.so+0x00000021e932)\n     #7 EventuallyPersistentEngine::storeIfInner(...)\u003e const\u0026) .../kv_engine/engines/ep/src/ep_engine.cc:2440 (ep.so+0x00000018071f)\n\n   Mutex M4054 acquired here while holding mutex M201671426334441480 in thread T5:\n     #0 AnnotateRWLockAcquired \u003cnull\u003e (libtsan.so.0+0x00000005b63d)\n     #1 folly::detail::annotate_rwlock_acquired_impl(void const volatile*, folly::annotate_rwlock_level, char const*, int) .../follytsan/folly/synchronization/SanitizeThread.cpp:91 (memcached+0x0000006463de)\n     #2 annotate_rwlock_acquired .../build/tlm/deps/folly.exploded/include/folly/synchronization/SanitizeThread.h:99 (ep.so+0x0000000bb5b6)\n     #3 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::annotateAcquired(folly::annotate_rwlock_level) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:696 (ep.so+0x0000000bb5b6)\n     #4 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::lock_shared(folly::SharedMutexToken\u0026) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:376 (ep.so+0x0000000bb5b6)\n     #5 folly::SharedMutexImpl\u003cfalse, void, std::atomic, false, true\u003e::ReadHolder::ReadHolder(...) .../build/tlm/deps/folly.exploded/include/folly/SharedMutex.h:1315 (ep.so+0x0000000bb5b6)\n     #6 ActiveStream::setDead(end_stream_status_t) .../kv_engine/engines/ep/src/dcp/active_stream.cc:1181 (ep.so+0x0000000bb5b6)\n     #7 operator() .../kv_engine/engines/ep/src/dcp/producer.cc:1491 (ep.so+0x0000001207df)\n     #8 for_each\u003c..., DcpProducer::setDisconnect()::\u003clambda(folly::AtomicHashMap\u003c...\u003e::value_type\u0026)\u003e \u003e /usr/local/include/c++/7.3.0/bits/stl_algo.h:3884 (ep.so+0x0000001207df)\n     #9 DcpProducer::setDisconnect() .../kv_engine/engines/ep/src/dcp/producer.cc:1493 (ep.so+0x000000120b08)\n\n   Mutex M201671426334441480 previously acquired by the same thread here:\n     #0 pthread_rwlock_rdlock \u003cnull\u003e (libtsan.so.0+0x00000002953b)\n     #1 cb_rw_reader_enter(pthread_rwlock_t*) .../platform/src/cb_pthreads.cc:195 (libplatform_so.so.0.1.0+0x000000009cfa)\n     #2 cb::RWLock::readerLock() .../platform/include/platform/rwlock.h:87 (ep.so+0x0000001205e9)\n     #3 cb::RWLock::lock_shared() .../platform/include/platform/rwlock.h:67 (ep.so+0x0000001205e9)\n     #4 std::shared_lock\u003ccb::RWLock\u003e::shared_lock(cb::RWLock\u0026) /usr/local/include/c++/7.3.0/shared_mutex:553 (ep.so+0x0000001205e9)\n     #5 StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e::ReadLockedHandle::ReadLockedHandle(StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e const\u0026) .../kv_engine/engines/ep/src/dcp/stream_container.h:213 (ep.so+0x0000001205e9)\n     #6 StreamContainer\u003cstd::shared_ptr\u003cStream\u003e \u003e::rlock() const .../kv_engine/engines/ep/src/dcp/stream_container.h:273 (ep.so+0x0000001205e9)\n     #7 operator() .../kv_engine/engines/ep/src/dcp/producer.cc:1490 (ep.so+0x0000001205e9)\n     #8 for_each\u003c..., DcpProducer::setDisconnect()::\u003clambda(folly::AtomicHashMap\u003c...\u003e::value_type\u0026)\u003e \u003e /usr/local/include/c++/7.3.0/bits/stl_algo.h:3884 (ep.so+0x0000001207df)\n     #9 DcpProducer::setDisconnect() .../kv_engine/engines/ep/src/dcp/producer.cc:1493 (ep.so+0x000000120b08)\n\nChange-Id: Ibb2ae11498c7226514bc18788778878bd6c87363\nReviewed-on: http://review.couchbase.org/111905\nReviewed-by: Dave Rigby \u003cdaver@couchbase.com\u003e\nTested-by: Build Bot \u003cbuild@couchbase.com\u003e\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"1c083035df1154da71de7573a7c83211d7b3df7b","is_merged_in_target_branch":true,"change_id":"I53268f82899a1db3f51db1efa45b7dcd8dc29b9e","change_number":111860,"patch_set_number":6,"change_status":"MERGED"}],"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
