)]}'
{"/COMMIT_MSG":[{"author":{"_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}]},"change_message_id":"8f1ca97305cb03cf05758ead16a6f25a1f02ed16","unresolved":false,"context_lines":[{"line_number":3,"context_line":"AuthorDate: 2019-08-09 12:55:21 +0100"},{"line_number":4,"context_line":"Commit:     Dave Rigby \u003cdaver@couchbase.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-08-19 08:25:01 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"MB-35458 [SR]: Move SyncWrite completion to bg DurabilityCompletionTask"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change how SyncWrites which are Resolved and awaiting Completion are"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"a28140f6_8e607c1e","line":6,"updated":"2019-08-19 10:19:10.000000000","message":"nit: bits of whitespace in here","commit_id":"c29a3e87c3cf4a756140ebdbb0ad50ee0c87ada9"},{"author":{"_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}]},"change_message_id":"8f1ca97305cb03cf05758ead16a6f25a1f02ed16","unresolved":false,"context_lines":[{"line_number":105,"context_line":"DurabilityCompletionTask that there are SyncWrites waiting for"},{"line_number":106,"context_line":"completion. "},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"DurabilityCompletionTask maintains a bool per vBucket indicating if there"},{"line_number":109,"context_line":"are SyncWrites for that vBucket pending completion. When the task is"},{"line_number":110,"context_line":"run, for each flag which is true it calls"},{"line_number":111,"context_line":"VBucket::processResolvedSyncWrites() for the associated VBucket."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"cb476d6d_caba6c43","line":108,"range":{"start_line":108,"start_character":68,"end_line":108,"end_character":73},"updated":"2019-08-19 10:19:10.000000000","message":"long","commit_id":"c29a3e87c3cf4a756140ebdbb0ad50ee0c87ada9"}],"engines/ep/src/durability/durability_completion_task.h":[{"author":{"_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}]},"change_message_id":"8f1ca97305cb03cf05758ead16a6f25a1f02ed16","unresolved":false,"context_lines":[{"line_number":31,"context_line":" * similar to a normal front-end Set operation, we want to move this to a"},{"line_number":32,"context_line":" * background task."},{"line_number":33,"context_line":" *"},{"line_number":34,"context_line":" * Additionally, by doing in a background task it simplifies lock management,"},{"line_number":35,"context_line":" * for example we avoid lock inversions with earlier locks acquired during"},{"line_number":36,"context_line":" * dcpSeqnoAck when attemping to later call notifySeqnoAvailable when this"},{"line_number":37,"context_line":" * was done on the original thread."}],"source_content_type":"text/x-csrc","patch_set":9,"id":"b41dd2ea_3e3bd0ea","line":34,"range":{"start_line":34,"start_character":25,"end_line":34,"end_character":26},"updated":"2019-08-19 10:19:10.000000000","message":"this","commit_id":"c29a3e87c3cf4a756140ebdbb0ad50ee0c87ada9"},{"author":{"_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}]},"change_message_id":"8f1ca97305cb03cf05758ead16a6f25a1f02ed16","unresolved":false,"context_lines":[{"line_number":38,"context_line":" */"},{"line_number":39,"context_line":"class DurabilityCompletionTask : public GlobalTask {"},{"line_number":40,"context_line":"public:"},{"line_number":41,"context_line":"    /**"},{"line_number":42,"context_line":"     * @param engine The engine which SyncWrites will be completed for."},{"line_number":43,"context_line":"     */"},{"line_number":44,"context_line":"    DurabilityCompletionTask(EventuallyPersistentEngine\u0026 engine);"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    bool run() override;"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"4c5bfdbb_feb09c18","line":43,"range":{"start_line":41,"start_character":0,"end_line":43,"end_character":7},"updated":"2019-08-19 10:19:10.000000000","message":"Can probably just remove this","commit_id":"c29a3e87c3cf4a756140ebdbb0ad50ee0c87ada9"},{"author":{"_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}]},"change_message_id":"8f1ca97305cb03cf05758ead16a6f25a1f02ed16","unresolved":false,"context_lines":[{"line_number":72,"context_line":"     */"},{"line_number":73,"context_line":"    std::vector\u003cstd::atomic_bool\u003e pendingVBs;"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    /// The last vBucket which SyncWrites were completed for."},{"line_number":76,"context_line":"    int lastVb;"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    /**"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"3d5a85d2_ebe4925f","line":75,"range":{"start_line":75,"start_character":0,"end_line":75,"end_character":61},"updated":"2019-08-19 10:19:10.000000000","message":"Think it would be helpful to explain what this is used for in the comment","commit_id":"c29a3e87c3cf4a756140ebdbb0ad50ee0c87ada9"}],"engines/ep/src/vbucket.cc":[{"author":{"_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}]},"change_message_id":"8f1ca97305cb03cf05758ead16a6f25a1f02ed16","unresolved":false,"context_lines":[{"line_number":225,"context_line":"      deferredDeletionCookie(nullptr),"},{"line_number":226,"context_line":"      newSeqnoCb(std::move(newSeqnoCb)),"},{"line_number":227,"context_line":"      syncWriteResolvedCb(syncWriteResolvedCb),"},{"line_number":228,"context_line":"      syncWriteCb(syncWriteCb),"},{"line_number":229,"context_line":"      seqnoAckCb(seqnoAckCb),"},{"line_number":230,"context_line":"      manifest(std::move(manifest)),"},{"line_number":231,"context_line":"      mayContainXattrs(mightContainXattrs) {"}],"source_content_type":"text/x-c","patch_set":9,"id":"5c43c9b6_fb8f1cc4","line":228,"range":{"start_line":228,"start_character":6,"end_line":228,"end_character":17},"updated":"2019-08-19 10:19:10.000000000","message":"Can we leave this as syncWriteCompleteCb? Or maybe give it a different name. Don\u0027t think syncWriteCb is very descriptive","commit_id":"c29a3e87c3cf4a756140ebdbb0ad50ee0c87ada9"}],"engines/ep/src/vbucket.h":[{"author":{"_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}]},"change_message_id":"8f1ca97305cb03cf05758ead16a6f25a1f02ed16","unresolved":false,"context_lines":[{"line_number":107,"context_line":" * are ready to be resolved (either met requirements and should be Committed, or"},{"line_number":108,"context_line":" * cannot meet requirements and should be Aborted)."},{"line_number":109,"context_line":" *"},{"line_number":110,"context_line":" * Will normally call the DurabilityResolutionTask to wake up and process"},{"line_number":111,"context_line":" * those resolved SyncWrites."},{"line_number":112,"context_line":" */"},{"line_number":113,"context_line":"using SyncWriteResolvedCallback \u003d std::function\u003cvoid(Vbid vbid)\u003e;"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"8ffd98b7_b1ff75de","line":110,"range":{"start_line":110,"start_character":26,"end_line":110,"end_character":50},"updated":"2019-08-19 10:19:10.000000000","message":"CompletionTask?","commit_id":"c29a3e87c3cf4a756140ebdbb0ad50ee0c87ada9"}],"engines/ep/tests/module_tests/vbucket_durability_test.h":[{"author":{"_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}]},"change_message_id":"8f1ca97305cb03cf05758ead16a6f25a1f02ed16","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    void storeSyncWrites(const std::vector\u003cSyncWriteSpec\u003e\u0026 writes);"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    /**"},{"line_number":57,"context_line":"     * Simulate a SetVBucketState call, includin processing any resolved"},{"line_number":58,"context_line":"     * SyncWrites which can now be Committed/Aborted."},{"line_number":59,"context_line":"     */"},{"line_number":60,"context_line":"    void simulateSetVBState(vbucket_state_t to,"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"d34b44fd_e4fda9e4","line":57,"range":{"start_line":57,"start_character":40,"end_line":57,"end_character":48},"updated":"2019-08-19 10:19:10.000000000","message":"including","commit_id":"c29a3e87c3cf4a756140ebdbb0ad50ee0c87ada9"}]}
