)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59f2c632096acb48c7cf9726b9f5fccd8ab51225","unresolved":true,"context_lines":[{"line_number":10,"context_line":"and atexit.unregister only ran from inside close(). Any consumer that"},{"line_number":11,"context_line":"builds Connections without explicitly closing them therefore accumulated"},{"line_number":12,"context_line":"one unreachable Connection per construction, for the life of the process:"},{"line_number":13,"context_line":"the atexit registry holds a strong reference to the callback, and a bound"},{"line_number":14,"context_line":"method carries __self__."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Each pinned Connection retains its CloudRegion, its keystoneauth session,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"abd4097d_e15e9336","line":13,"updated":"2026-09-23 16:03:00.000000000","message":"can you wrap this whole thing at \u003c\u003d 72 characters","commit_id":"8546416d2e9dfe0c474a0c6a0973049ad26de52b"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"2d5ecd7f0a0323d87d9249cca5efcfa8fa5e7377","unresolved":false,"context_lines":[{"line_number":10,"context_line":"and atexit.unregister only ran from inside close(). Any consumer that"},{"line_number":11,"context_line":"builds Connections without explicitly closing them therefore accumulated"},{"line_number":12,"context_line":"one unreachable Connection per construction, for the life of the process:"},{"line_number":13,"context_line":"the atexit registry holds a strong reference to the callback, and a bound"},{"line_number":14,"context_line":"method carries __self__."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Each pinned Connection retains its CloudRegion, its keystoneauth session,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"00338012_0d6bf96e","line":13,"in_reply_to":"abd4097d_e15e9336","updated":"2026-09-23 17:02:09.000000000","message":"Done","commit_id":"8546416d2e9dfe0c474a0c6a0973049ad26de52b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59f2c632096acb48c7cf9726b9f5fccd8ab51225","unresolved":true,"context_lines":[{"line_number":37,"context_line":"collected, as it was under the __del__ that predates it."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Change-Id: I586b20c368d89daa166d99aa898a7e2e986b92a3"},{"line_number":40,"context_line":"Signed-off-by: Andriy Kurilin \u003candr.kurilin@gmail.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"e0bf1eb0_90211807","line":40,"updated":"2026-09-23 16:03:00.000000000","message":"Can you file a bug so we can backport this?","commit_id":"8546416d2e9dfe0c474a0c6a0973049ad26de52b"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"2d5ecd7f0a0323d87d9249cca5efcfa8fa5e7377","unresolved":false,"context_lines":[{"line_number":37,"context_line":"collected, as it was under the __del__ that predates it."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Change-Id: I586b20c368d89daa166d99aa898a7e2e986b92a3"},{"line_number":40,"context_line":"Signed-off-by: Andriy Kurilin \u003candr.kurilin@gmail.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"70905e93_618e0ac5","line":40,"in_reply_to":"e0bf1eb0_90211807","updated":"2026-09-23 17:02:09.000000000","message":"Done","commit_id":"8546416d2e9dfe0c474a0c6a0973049ad26de52b"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"75c75bb42247d9519447796c98f5d11bf01634e9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"bdfae6bf_93fc2924","updated":"2026-09-23 16:03:21.000000000","message":"Change looks fine. Couple of small requests though assuming we want to backport this","commit_id":"8546416d2e9dfe0c474a0c6a0973049ad26de52b"}],"openstack/cloud/openstackcloud.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59f2c632096acb48c7cf9726b9f5fccd8ab51225","unresolved":true,"context_lines":[{"line_number":292,"context_line":"        # `self` would keep this connection, its session and all other"},{"line_number":293,"context_line":"        # internal objects (including TLS contexts) alive until the process"},{"line_number":294,"context_line":"        # exits."},{"line_number":295,"context_line":"        self._finalizer \u003d weakref.finalize(self, _run_close, weakref.ref(self))"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    @property"},{"line_number":298,"context_line":"    def session(self) -\u003e \u0027ks_session.Session\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"e0eef74b_cb66e662","line":295,"updated":"2026-09-23 16:03:00.000000000","message":"Can we add a test for this in `openstack/tests/unit/cloud/test_cloud.py`? If I\u0027ve understood this correctly then something like the below ought to do the trick:\n\n```\nconn \u003d connection.Connection(config\u003dself.cloud.config)\nconn_ref \u003d weakref.ref(conn)\n\ndel conn\ngc.collect()\n\nself.assertIsNone(conn_ref())\n```\n\nIf revert this change then the `assertIsNone` would fail.","commit_id":"8546416d2e9dfe0c474a0c6a0973049ad26de52b"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"2d5ecd7f0a0323d87d9249cca5efcfa8fa5e7377","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        # `self` would keep this connection, its session and all other"},{"line_number":293,"context_line":"        # internal objects (including TLS contexts) alive until the process"},{"line_number":294,"context_line":"        # exits."},{"line_number":295,"context_line":"        self._finalizer \u003d weakref.finalize(self, _run_close, weakref.ref(self))"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    @property"},{"line_number":298,"context_line":"    def session(self) -\u003e \u0027ks_session.Session\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"2c782558_41cb957a","line":295,"in_reply_to":"e0eef74b_cb66e662","updated":"2026-09-23 17:02:09.000000000","message":"yes, this test is valid. failed on master.","commit_id":"8546416d2e9dfe0c474a0c6a0973049ad26de52b"}]}
