)]}'
{"acouchbase/logic/cluster_impl.py":[{"author":{"_account_id":1000201,"name":"Sergey Avseyev","email":"sergey.avseyev@gmail.com","username":"avsej","avatars":[{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"b11053432e136bc97ad5e1cd504690a4c2eba523","unresolved":true,"context_lines":[{"line_number":161,"context_line":"        # anywhere in the async path), which releases the GIL for a full cluster round-trip."},{"line_number":162,"context_line":"        # Use threading.Lock, not asyncio.Lock, for the same reason."},{"line_number":163,"context_line":"        self._client_adapter._ensure_not_closed()"},{"line_number":164,"context_line":"        self._client_adapter._ensure_connected()"},{"line_number":165,"context_line":"        if self._transactions is None:"},{"line_number":166,"context_line":"            with self._transactions_lock:"},{"line_number":167,"context_line":"                if self._transactions is None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"d82127ed_c2c323da","line":164,"updated":"2026-09-01 02:54:13.000000000","message":"Adding this guard is correct and properly resolves Defect 1 for the async tree. However, it breaks `acouchbase/tests/transactions_property_race_t.py` because that test was not updated to use a `race_cluster` fixture (with the connection guard stubbed out) like its sync counterpart `couchbase/tests/transactions_property_race_t.py` was. Please apply the same test updates to `acouchbase/tests/transactions_property_race_t.py` so that the async race tests pass.","commit_id":"9e72abd9207465be8b792461988063b42a97cd8d"},{"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":"6a6b3fb3dd92e81a5994d6389f028774de69a805","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        # anywhere in the async path), which releases the GIL for a full cluster round-trip."},{"line_number":162,"context_line":"        # Use threading.Lock, not asyncio.Lock, for the same reason."},{"line_number":163,"context_line":"        self._client_adapter._ensure_not_closed()"},{"line_number":164,"context_line":"        self._client_adapter._ensure_connected()"},{"line_number":165,"context_line":"        if self._transactions is None:"},{"line_number":166,"context_line":"            with self._transactions_lock:"},{"line_number":167,"context_line":"                if self._transactions is None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"a15fb7a0_466196b0","line":164,"in_reply_to":"d82127ed_c2c323da","updated":"2026-09-01 21:04:18.000000000","message":"Good call!  updated.","commit_id":"9e72abd9207465be8b792461988063b42a97cd8d"}]}
