)]}'
{"id":"couchnode~256439","triplet_id":"couchnode~master~I2c7d8a4deb1098d805f1b7e902177ad70b747add","project":"couchnode","branch":"master","topic":"nodejs-sdk-teardown-lifecycle","attention_set":{},"removed_from_attention_set":{"1004568":{"account":{"_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}]},"last_update":"2026-10-27 16:13:38.000000000","reason":"removed on reply"},"1005036":{"account":{"_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}]},"last_update":"2026-10-27 16:11:23.000000000","reason":"removed on reply"}},"hashtags":[],"change_id":"I2c7d8a4deb1098d805f1b7e902177ad70b747add","subject":"JSCBC-1522: Close and destroy transactions objects off the JS thread","status":"MERGED","created":"2026-10-22 00:02:35.000000000","updated":"2026-10-27 16:13:41.000000000","submitted":"2026-10-27 16:13:41.000000000","submitter":{"_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}]},"total_comment_count":2,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"256439-nodejs-sdk-teardown-lifecycle","meta_rev_id":"9059aa6961554014ac6b11062a718af528c004ea","_number":256439,"virtual_id_number":256439,"owner":{"_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}]},"actions":{},"labels":{"Verified":{"approved":{"_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}]},"all":[{"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"]},{"tag":"autogenerated:gerrit:merged","value":1,"date":"2026-10-27 16:13:41.000000000","permitted_voting_range":{"min":1,"max":1},"_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}]},{"value":0,"_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}]}],"values":{"-1":"Fails"," 0":"No score","+1":"Verified"},"description":"","default_value":0},"Code-Review":{"approved":{"_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}]},"all":[{"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":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}]},{"tag":"autogenerated:gerrit:merged","value":2,"date":"2026-10-27 16:13:41.000000000","permitted_voting_range":{"min":2,"max":2},"_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}]}],"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":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":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}]},{"value":0,"_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}]}],"values":{"-1":"Commit is not well-formed"," 0":"Well-formedness not checked","+1":"Commit is well-formed"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},{"_account_id":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}]},{"_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}]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-10-22 00:02:44.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":"CC"},{"updated":"2026-10-22 04:29:40.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":"2026-10-26 13:09:58.000000000","updated_by":{"_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}]},"reviewer":{"_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}]},"state":"CC"},{"updated":"2026-10-27 16:11:23.000000000","updated_by":{"_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}]},"reviewer":{"_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}]},"state":"REVIEWER"}],"messages":[{"id":"a2df7cf67c317a9071b391badbb6e38df7306eb4","tag":"autogenerated:gerrit:newPatchSet","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}]},"date":"2026-10-22 00:02:35.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"e2eb76a34ca2ca3c691442f73ea9871afa627425","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":"2026-10-22 00:02:44.000000000","message":"Patch Set 1:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/nodejs/job/couchnode/job/couchnode-cv-trigger/1899/","accounts_in_message":[],"_revision_number":1},{"id":"a59f4d7d6c112c4ff513afc9985cec0abb326be1","tag":"autogenerated:gerrit:setTopic","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}]},"date":"2026-10-22 00:04:02.000000000","message":"Topic set to nodejs-sdk-teardown-lifecycle","accounts_in_message":[],"_revision_number":1},{"id":"a407231101a067e55100fc7c6d864d84d4186437","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":"2026-10-22 04:29:40.000000000","message":"Patch Set 1: Verified-1\n\nBuild Failed \n\nhttps://sdk.jenkins.couchbase.com/job/nodejs/job/couchnode/job/couchnode-cv-trigger/1899/ : FAILURE","accounts_in_message":[],"_revision_number":1},{"id":"e115a6c838187e21e4cb64d226148a803959ce47","tag":"autogenerated:gerrit:newPatchSet","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}]},"date":"2026-10-22 20:31:03.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"changekind:NO_CHANGE OR changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[],"_revision_number":2},{"id":"924c956c4678d66da27542cd67c0bc312ba84e50","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":"2026-10-22 20:31:11.000000000","message":"Patch Set 2:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/nodejs/job/couchnode/job/couchnode-cv-trigger/1914/","accounts_in_message":[],"_revision_number":2},{"id":"2b13c06e60bd1e0f16948a7fee1ddf18e1409735","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":"2026-10-22 21:22:38.000000000","message":"Patch Set 2:\n\nBuild Successful \n\nhttps://sdk.jenkins.couchbase.com/job/nodejs/job/couchnode/job/couchnode-cv-trigger/1914/ : SUCCESS","accounts_in_message":[],"_revision_number":2},{"id":"2248008eb45de7bfb3e3f3974e85605a4a7c1b1d","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}]},"date":"2026-10-26 13:09:58.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"3326f7c86d76e5ad99111f6be45b7e1ecd96177f","tag":"autogenerated:gerrit:newPatchSet","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}]},"date":"2026-10-26 19:55:51.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"45907fb40ecb8decd37590a9ab15c6cbba24b853","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":"2026-10-26 19:55:59.000000000","message":"Patch Set 3:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/nodejs/job/couchnode/job/couchnode-cv-trigger/1925/","accounts_in_message":[],"_revision_number":3},{"id":"0893c427a4175bbaae8a4673caae9b1dac5b6a8b","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":"2026-10-26 21:58:49.000000000","message":"Patch Set 3:\n\nBuild Successful \n\nhttps://sdk.jenkins.couchbase.com/job/nodejs/job/couchnode/job/couchnode-cv-trigger/1925/ : SUCCESS","accounts_in_message":[],"_revision_number":3},{"id":"8e60ae0f4a33e6444b63b2c5b0c04f802c7d228e","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}]},"date":"2026-10-27 00:47:43.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"1fa7f471323ad3c5289fb0320924f55c136c0a8d","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}]},"date":"2026-10-27 16:11:23.000000000","message":"Patch Set 3: Code-Review+2","accounts_in_message":[],"_revision_number":3},{"id":"5b70608b0d861991671f9e05d1ae4e1e668552ae","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}]},"date":"2026-10-27 16:13:38.000000000","message":"Patch Set 3: Verified+1","accounts_in_message":[],"_revision_number":3},{"id":"9059aa6961554014ac6b11062a718af528c004ea","tag":"autogenerated:gerrit:merged","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}]},"date":"2026-10-27 16:13:41.000000000","message":"Change has been successfully cherry-picked as 8a2d2606cde0a7dd6993a0b1ed7db02223750058","accounts_in_message":[],"_revision_number":4}],"current_revision_number":4,"current_revision":"8a2d2606cde0a7dd6993a0b1ed7db02223750058","revisions":{"35c457ab8b104c915871381e1b06d06cbf2bdfc3":{"kind":"REWORK","_number":1,"created":"2026-10-22 00:02:35.000000000","uploader":{"_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}]},"ref":"refs/changes/39/256439/1","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchnode","ref":"refs/changes/39/256439/1","commands":{"Branch":"git fetch https://review.couchbase.org/couchnode refs/changes/39/256439/1 \u0026\u0026 git checkout -b change-256439 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchnode refs/changes/39/256439/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchnode refs/changes/39/256439/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchnode refs/changes/39/256439/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchnode refs/changes/39/256439/1","Reset To":"git fetch https://review.couchbase.org/couchnode refs/changes/39/256439/1 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"ae1fbd0a5b3ceae7ff175798786c65bfff01092e","subject":"JSCBC-1530: Complete a dropped operation with RequestCanceledError"}],"author":{"name":"Jared Casey","email":"jared.casey@couchbase.com","date":"2026-10-17 19:38:32.000000000","tz":-360},"committer":{"name":"Jared Casey","email":"jared.casey@couchbase.com","date":"2026-10-22 00:02:17.000000000","tz":-360},"subject":"JSCBC-1522: Close and destroy transactions objects off the JS thread","message":"JSCBC-1522: Close and destroy transactions objects off the JS thread\n\nChanges\n-------\n* Run the core\u0027s transactions close() from Transactions::jsClose on a\n  detached thread and call back through a CallCookie, so removing the\n  client record from each bucket no longer blocks the event loop;\n  close inline, as before, when no thread can be started\n* Instance now owns every core transactions object created on its\n  connection; the Transactions and Transaction wrappers hold aliasing\n  pointers that keep the instance alive instead, so collecting a\n  Transactions wrapper never frees an object a live transaction still\n  uses, and no finalizer runs the core\u0027s destructor on the JS thread\n* Close each object through Instance::closeTransactions, which holds a\n  lock for the whole close, so an explicit close and the connection\u0027s\n  shutdown are serialized and close it once (two concurrent closes end\n  the process)\n* Instance::shutdown closes every transactions object still open\n  before the cluster, and destroys them while the cluster is open, or\n  once the IO thread has stopped when an operation is still in flight\n  and so still uses its object\n* Count a transaction operation from its start until its callback is\n  invoked or its handler is destroyed, through a TransactionOp shared\n  by every copy of its RefCallCookie\n* Document on Transactions.run that an operation in flight at a worker\n  terminate or process exit is cancelled, and lost transaction cleanup\n  decides the outcome\n* Add a vars option to expectProcessExits for passing extra\n  environment variables to an exit fixture\n* Add tests that the close callback runs after the call returns, that\n  two concurrent closes both resolve, and that terminating a worker\n  while its cluster is closing still exits\n* Add a test that commits after the Transactions wrapper that started\n  the transaction has been collected\n* Add a test that terminates workers with transactions still open, and\n  after collecting their connection, and checks that each client is\n  removed from the client record\n* Add test/suites/transactions/teardownstall.test.ts, which stalls a\n  worker\u0027s IO thread, with a commit queued behind the stall and with\n  its transactions closed, and checks each terminate returns at its\n  bound\n\nChange-Id: I2c7d8a4deb1098d805f1b7e902177ad70b747add\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"ae1fbd0a5b3ceae7ff175798786c65bfff01092e","is_merged_in_target_branch":false,"change_id":"I1074ac5708e3f787a8b487c7db08622204f682d3","change_number":256438,"patch_set_number":1,"change_status":"MERGED"}],"branch":"refs/heads/master"},"a91cb9464300738e6658def679ba2c669c04e257":{"kind":"REWORK","_number":2,"created":"2026-10-22 20:31:03.000000000","uploader":{"_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}]},"ref":"refs/changes/39/256439/2","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchnode","ref":"refs/changes/39/256439/2","commands":{"Branch":"git fetch https://review.couchbase.org/couchnode refs/changes/39/256439/2 \u0026\u0026 git checkout -b change-256439 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchnode refs/changes/39/256439/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchnode refs/changes/39/256439/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchnode refs/changes/39/256439/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchnode refs/changes/39/256439/2","Reset To":"git fetch https://review.couchbase.org/couchnode refs/changes/39/256439/2 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"ae1fbd0a5b3ceae7ff175798786c65bfff01092e","subject":"JSCBC-1530: Complete a dropped operation with RequestCanceledError"}],"author":{"name":"Jared Casey","email":"jared.casey@couchbase.com","date":"2026-10-17 19:38:32.000000000","tz":-360},"committer":{"name":"Jared Casey","email":"jared.casey@couchbase.com","date":"2026-10-22 19:54:40.000000000","tz":-360},"subject":"JSCBC-1522: Close and destroy transactions objects off the JS thread","message":"JSCBC-1522: Close and destroy transactions objects off the JS thread\n\nChanges\n-------\n* Run the core\u0027s transactions close() from Transactions::jsClose on a\n  detached thread and call back through a CallCookie, so removing the\n  client record from each bucket no longer blocks the event loop;\n  close inline, as before, when no thread can be started\n* Instance now owns every core transactions object created on its\n  connection; the Transactions and Transaction wrappers hold aliasing\n  pointers that keep the instance alive instead, so collecting a\n  Transactions wrapper never frees an object a live transaction still\n  uses, and no finalizer runs the core\u0027s destructor on the JS thread\n* Close each object through Instance::closeTransactions, which holds a\n  lock for the whole close, so an explicit close and the connection\u0027s\n  shutdown are serialized and close it once (two concurrent closes end\n  the process)\n* Instance::shutdown closes every transactions object still open\n  before the cluster, and destroys them while the cluster is open, or\n  once the IO thread has stopped when an operation is still in flight\n  and so still uses its object\n* Count a transaction operation from its start until its callback is\n  invoked or its handler is destroyed, through a TransactionOp shared\n  by every copy of its RefCallCookie\n* Document on Transactions.run that an operation in flight at a worker\n  terminate or process exit is cancelled, and lost transaction cleanup\n  decides the outcome\n* Add a vars option to expectProcessExits for passing extra\n  environment variables to an exit fixture\n* Add tests that the close callback runs after the call returns, that\n  two concurrent closes both resolve, and that terminating a worker\n  while its cluster is closing still exits\n* Add a test that commits after the Transactions wrapper that started\n  the transaction has been collected\n* Add a test that terminates workers with transactions still open, and\n  after collecting their connection, and checks that each client is\n  removed from the client record\n* Add test/suites/transactions/teardownstall.test.ts, which stalls a\n  worker\u0027s IO thread, with a commit queued behind the stall and with\n  its transactions closed, and checks each terminate returns at its\n  bound\n\nChange-Id: I2c7d8a4deb1098d805f1b7e902177ad70b747add\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"ae1fbd0a5b3ceae7ff175798786c65bfff01092e","is_merged_in_target_branch":false,"change_id":"I1074ac5708e3f787a8b487c7db08622204f682d3","change_number":256438,"patch_set_number":1,"change_status":"MERGED"}],"branch":"refs/heads/master"},"575a822d48687a82bef7834db7273c2d01f6baf4":{"kind":"REWORK","_number":3,"created":"2026-10-26 19:55:51.000000000","uploader":{"_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}]},"ref":"refs/changes/39/256439/3","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchnode","ref":"refs/changes/39/256439/3","commands":{"Branch":"git fetch https://review.couchbase.org/couchnode refs/changes/39/256439/3 \u0026\u0026 git checkout -b change-256439 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchnode refs/changes/39/256439/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchnode refs/changes/39/256439/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchnode refs/changes/39/256439/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchnode refs/changes/39/256439/3","Reset To":"git fetch https://review.couchbase.org/couchnode refs/changes/39/256439/3 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"4735fde8890d12ff48e075da50b30fc90c610fe9","subject":"JSCBC-1530: Complete a dropped operation with RequestCanceledError"}],"author":{"name":"Jared Casey","email":"jared.casey@couchbase.com","date":"2026-10-17 19:38:32.000000000","tz":-360},"committer":{"name":"Jared Casey","email":"jared.casey@couchbase.com","date":"2026-10-26 19:43:02.000000000","tz":-360},"subject":"JSCBC-1522: Close and destroy transactions objects off the JS thread","message":"JSCBC-1522: Close and destroy transactions objects off the JS thread\n\nChanges\n-------\n* Run the core\u0027s transactions close() from Transactions::jsClose on a\n  detached thread and call back through a CallCookie, so removing the\n  client record from each bucket no longer blocks the event loop;\n  close inline, as before, when no thread can be started\n* Instance now owns every core transactions object created on its\n  connection; the Transactions and Transaction wrappers hold aliasing\n  pointers that keep the instance alive instead, so collecting a\n  Transactions wrapper never frees an object a live transaction still\n  uses, and no finalizer runs the core\u0027s destructor on the JS thread\n* Close each object through Instance::closeTransactions, which holds a\n  lock for the whole close, so an explicit close and the connection\u0027s\n  shutdown are serialized and close it once (two concurrent closes end\n  the process)\n* Instance::shutdown closes every transactions object still open\n  before the cluster, and destroys them while the cluster is open, or\n  once the IO thread has stopped when an operation is still in flight\n  and so still uses its object\n* Count a transaction operation from its start until its callback is\n  invoked or its handler is destroyed, through a TransactionOp shared\n  by every copy of its RefCallCookie\n* Document on Transactions.run that an operation in flight at a worker\n  terminate or process exit is cancelled, and lost transaction cleanup\n  decides the outcome\n* Add a vars option to expectProcessExits for passing extra\n  environment variables to an exit fixture\n* Add tests that the close callback runs after the call returns, that\n  two concurrent closes both resolve, and that terminating a worker\n  while its cluster is closing still exits\n* Add a test that commits after the Transactions wrapper that started\n  the transaction has been collected\n* Add a test that terminates workers with transactions still open, and\n  after collecting their connection, and checks that each client is\n  removed from the client record\n* Add test/suites/transactions/teardownstall.test.ts, which stalls a\n  worker\u0027s IO thread, with a commit queued behind the stall and with\n  its transactions closed, and checks each terminate returns at its\n  bound\n\nChange-Id: I2c7d8a4deb1098d805f1b7e902177ad70b747add\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"4735fde8890d12ff48e075da50b30fc90c610fe9","is_merged_in_target_branch":false,"change_id":"I1074ac5708e3f787a8b487c7db08622204f682d3","change_number":256438,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/master"},"8a2d2606cde0a7dd6993a0b1ed7db02223750058":{"kind":"NO_CODE_CHANGE","_number":4,"created":"2026-10-27 16:13:41.000000000","uploader":{"_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}]},"ref":"refs/changes/39/256439/4","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchnode","ref":"refs/changes/39/256439/4","commands":{"Branch":"git fetch https://review.couchbase.org/couchnode refs/changes/39/256439/4 \u0026\u0026 git checkout -b change-256439 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchnode refs/changes/39/256439/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchnode refs/changes/39/256439/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchnode refs/changes/39/256439/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchnode refs/changes/39/256439/4","Reset To":"git fetch https://review.couchbase.org/couchnode refs/changes/39/256439/4 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"7f7480a51f8d67d01ffdd7328501b96bbe4612f3","subject":"JSCBC-1530: Complete a dropped operation with RequestCanceledError"}],"author":{"name":"Jared Casey","email":"jared.casey@couchbase.com","date":"2026-10-17 19:38:32.000000000","tz":-360},"committer":{"name":"Jared Casey","email":"jared.casey@couchbase.com","date":"2026-10-27 16:13:41.000000000","tz":0},"subject":"JSCBC-1522: Close and destroy transactions objects off the JS thread","message":"JSCBC-1522: Close and destroy transactions objects off the JS thread\n\nChanges\n-------\n* Run the core\u0027s transactions close() from Transactions::jsClose on a\n  detached thread and call back through a CallCookie, so removing the\n  client record from each bucket no longer blocks the event loop;\n  close inline, as before, when no thread can be started\n* Instance now owns every core transactions object created on its\n  connection; the Transactions and Transaction wrappers hold aliasing\n  pointers that keep the instance alive instead, so collecting a\n  Transactions wrapper never frees an object a live transaction still\n  uses, and no finalizer runs the core\u0027s destructor on the JS thread\n* Close each object through Instance::closeTransactions, which holds a\n  lock for the whole close, so an explicit close and the connection\u0027s\n  shutdown are serialized and close it once (two concurrent closes end\n  the process)\n* Instance::shutdown closes every transactions object still open\n  before the cluster, and destroys them while the cluster is open, or\n  once the IO thread has stopped when an operation is still in flight\n  and so still uses its object\n* Count a transaction operation from its start until its callback is\n  invoked or its handler is destroyed, through a TransactionOp shared\n  by every copy of its RefCallCookie\n* Document on Transactions.run that an operation in flight at a worker\n  terminate or process exit is cancelled, and lost transaction cleanup\n  decides the outcome\n* Add a vars option to expectProcessExits for passing extra\n  environment variables to an exit fixture\n* Add tests that the close callback runs after the call returns, that\n  two concurrent closes both resolve, and that terminating a worker\n  while its cluster is closing still exits\n* Add a test that commits after the Transactions wrapper that started\n  the transaction has been collected\n* Add a test that terminates workers with transactions still open, and\n  after collecting their connection, and checks that each client is\n  removed from the client record\n* Add test/suites/transactions/teardownstall.test.ts, which stalls a\n  worker\u0027s IO thread, with a commit queued behind the stall and with\n  its transactions closed, and checks each terminate returns at its\n  bound\n\nChange-Id: I2c7d8a4deb1098d805f1b7e902177ad70b747add\nReviewed-on: https://review.couchbase.org/c/couchnode/+/256439\nReviewed-by: Mateusz \u003cmatt.wozakowski@couchbase.com\u003e\nTested-by: Jared Casey \u003cjared.casey@couchbase.com\u003e\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"7f7480a51f8d67d01ffdd7328501b96bbe4612f3","is_merged_in_target_branch":true,"change_id":"I1074ac5708e3f787a8b487c7db08622204f682d3","change_number":256438,"patch_set_number":3,"change_status":"MERGED"}],"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Verified","status":"OK","applied_by":{"_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}]}},{"label":"Code-Review","status":"OK","applied_by":{"_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}]}},{"label":"Well-Formed","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Verified\u003dMAX -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX","-label:Verified\u003dMIN"],"failing_atoms":[]}},{"name":"Code-Review","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX","-label:Code-Review\u003dMIN"],"failing_atoms":[]}}]}
