)]}'
{"src/transactions.cpp":[{"author":{"_account_id":1005036,"name":"Mateusz","email":"matt.wozakowski@couchbase.com","username":"Matt-Woz","avatars":[{"url":"https://www.gravatar.com/avatar/d441eca9ad4e97ba9390eae4a3fa7967.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/d441eca9ad4e97ba9390eae4a3fa7967.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/d441eca9ad4e97ba9390eae4a3fa7967.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/d441eca9ad4e97ba9390eae4a3fa7967.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"2248008eb45de7bfb3e3f3974e85605a4a7c1b1d","unresolved":true,"context_lines":[{"line_number":61,"context_line":"    // with, waiting on a cluster request for each, so it runs on its own"},{"line_number":62,"context_line":"    // thread rather than on the event loop. The thread holds its own reference"},{"line_number":63,"context_line":"    // to the instance, so it does not depend on this wrapper staying alive."},{"line_number":64,"context_line":"    auto cookie \u003d std::make_unique\u003cCallCookie\u003e(info.Env(), callbackJsFn,"},{"line_number":65,"context_line":"                                               \"cbTxnsCloseCallback\");"},{"line_number":66,"context_line":"    try {"},{"line_number":67,"context_line":"        std::thread([instance \u003d _instance, impl \u003d _impl.get(),"}],"source_content_type":"text/x-c++src","patch_set":2,"id":"eb449804_525bce79","line":64,"updated":"2026-10-26 13:09:58.000000000","message":"Claude suggested we make this a shared_ptr so that it can survive into the `catch`, and then call the callback within `cookie-\u003einvoke()`, to avoid the double callback that occurs when the cookie is destroyed in case `std::thread` fails","commit_id":"a91cb9464300738e6658def679ba2c669c04e257"},{"author":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"8e60ae0f4a33e6444b63b2c5b0c04f802c7d228e","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    // with, waiting on a cluster request for each, so it runs on its own"},{"line_number":62,"context_line":"    // thread rather than on the event loop. The thread holds its own reference"},{"line_number":63,"context_line":"    // to the instance, so it does not depend on this wrapper staying alive."},{"line_number":64,"context_line":"    auto cookie \u003d std::make_unique\u003cCallCookie\u003e(info.Env(), callbackJsFn,"},{"line_number":65,"context_line":"                                               \"cbTxnsCloseCallback\");"},{"line_number":66,"context_line":"    try {"},{"line_number":67,"context_line":"        std::thread([instance \u003d _instance, impl \u003d _impl.get(),"}],"source_content_type":"text/x-c++src","patch_set":2,"id":"56297afd_24e8a898","line":64,"in_reply_to":"eb449804_525bce79","updated":"2026-10-27 00:47:43.000000000","message":"I say nice catch!! Updated in the latest patchset.","commit_id":"a91cb9464300738e6658def679ba2c669c04e257"}]}
