)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"23832980a4622ef40632a90267a5f89413ebfd93","unresolved":true,"context_lines":[{"line_number":45,"context_line":"blocks.  These bugs were previously masked by the _last_ctxt_mgr"},{"line_number":46,"context_line":"hack, which implicitly routed untargeted DB access to whatever cell"},{"line_number":47,"context_line":"was last targeted by any code path."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Closes-Bug: #2167088"},{"line_number":50,"context_line":"Assisted-by: Claude claude-opus-4-6 claude-code-2.1.281"},{"line_number":51,"context_line":"Change-Id: I879030569a5bc88442700d429ec9b46402ae5ed5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1a671c32_8ffe2753","line":48,"updated":"2026-09-28 13:28:38.000000000","message":"took more some rounds of brain cycles for reviewing this series but this commit message definitely helped myself. Thanks, let\u0027s try to use it and hopefully we won\u0027t have any CI failure due to it (that\u0027s what I tried to think about it when reviewing this patch)","commit_id":"901e45521f257688e0f284af904c06a00c15c1f9"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"23832980a4622ef40632a90267a5f89413ebfd93","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d0e70b04_446f192a","updated":"2026-09-28 13:28:38.000000000","message":"I can approve it now, I understand now the context and I found no problems (I tried to looked whether we could have CI race conditions, but no)","commit_id":"901e45521f257688e0f284af904c06a00c15c1f9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5deab4aea5fe6fa421b5a63651fc9cd5765a023f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"458af319_d12c749f","updated":"2026-09-24 11:30:53.000000000","message":"I run this many times locally now in a setup was able to reliably reproduce the hang. This testing shows that this change solves the problem. I think this is a good step forward as it cleans the complicated fixture a bit. Lets land this.","commit_id":"901e45521f257688e0f284af904c06a00c15c1f9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e6a7fe2ea2a3922d1d20f9d02ccc2fe564b9601e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"85313a19_2d589ecb","updated":"2026-09-24 15:45:52.000000000","message":"https://review.opendev.org/c/openstack/nova/+/1007150 this is a potential followup to improve the structure of our tests to avoid some of the unrealistic calls.","commit_id":"901e45521f257688e0f284af904c06a00c15c1f9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"818536affc662d9877d5eadd057b647125267ac4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"74443c43_4fff7e28","updated":"2026-09-24 13:26:23.000000000","message":"recheck see one more run","commit_id":"901e45521f257688e0f284af904c06a00c15c1f9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b96212c50dafc8036cd082f28465f96051349ff2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e5fac0f3_9df9d2d8","updated":"2026-09-24 11:31:37.000000000","message":"recheck to gather more runs","commit_id":"901e45521f257688e0f284af904c06a00c15c1f9"}],"nova/tests/fixtures/nova.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"950eaf314de18e9434675a91f10cb95d8a88c3f8","unresolved":true,"context_lines":[{"line_number":456,"context_line":""},{"line_number":457,"context_line":"        # Save the current cell routing for this thread/greenlet so we"},{"line_number":458,"context_line":"        # can restore it when we leave this context."},{"line_number":459,"context_line":"        previous \u003d getattr(self._local, \u0027ctxt_mgr\u0027, self._default_ctxt_mgr)"},{"line_number":460,"context_line":"        self._local.ctxt_mgr \u003d desired"},{"line_number":461,"context_line":"        try:"},{"line_number":462,"context_line":"            with self._real_target_cell(context, cell_mapping) as c:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ebbc2e4b_adda309b","line":459,"updated":"2026-04-15 13:56:33.000000000","message":"If each service start sets ctxt_mgr to the default, how can be that we see a not defined ctxt_mgr in the thread local? I guess it is possible that the service spawn threads later and those threads are not inheriting the DB context, so if such thread tries to access the DB without targeting a specific cell we need to fall back to the default ctxt_mgr here\n.","commit_id":"9b0508fa6b0347a851c7c347bbd9a0f1d44b24e4"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"6ec3c9dd9b8fc3ee7c04625162a3b98aaa8c0b5a","unresolved":false,"context_lines":[{"line_number":456,"context_line":""},{"line_number":457,"context_line":"        # Save the current cell routing for this thread/greenlet so we"},{"line_number":458,"context_line":"        # can restore it when we leave this context."},{"line_number":459,"context_line":"        previous \u003d getattr(self._local, \u0027ctxt_mgr\u0027, self._default_ctxt_mgr)"},{"line_number":460,"context_line":"        self._local.ctxt_mgr \u003d desired"},{"line_number":461,"context_line":"        try:"},{"line_number":462,"context_line":"            with self._real_target_cell(context, cell_mapping) as c:"}],"source_content_type":"text/x-python","patch_set":1,"id":"e476049f_60f864fa","line":459,"in_reply_to":"ebbc2e4b_adda309b","updated":"2026-09-24 08:35:20.000000000","message":"Yes I think that is true, threads can spawn later. But also I have removed the initialization of self._local.ctxt_mgr from add_cell_database() because add_cell_database is called in a loop, so this always ended up pointing at the last cell added, not the default. The save/restore in _wrap_target_cell then kept restoring to that wrong cell.","commit_id":"9b0508fa6b0347a851c7c347bbd9a0f1d44b24e4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"950eaf314de18e9434675a91f10cb95d8a88c3f8","unresolved":true,"context_lines":[{"line_number":460,"context_line":"        self._local.ctxt_mgr \u003d desired"},{"line_number":461,"context_line":"        try:"},{"line_number":462,"context_line":"            with self._real_target_cell(context, cell_mapping) as c:"},{"line_number":463,"context_line":"                yield c"},{"line_number":464,"context_line":"        finally:"},{"line_number":465,"context_line":"            self._local.ctxt_mgr \u003d previous"},{"line_number":466,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"b5ef5f95_c8487736","line":463,"updated":"2026-04-15 13:56:33.000000000","message":"OK, so while we within this context the self._local.ctxt_mgr is set to \"desired\" ctxt_mgr that maps to the proper cell DB. But I don\u0027t see when the current value of self._local.ctxt_mgr is read and therefore affecting the current thread\u0027s access to the DB.","commit_id":"9b0508fa6b0347a851c7c347bbd9a0f1d44b24e4"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"6ec3c9dd9b8fc3ee7c04625162a3b98aaa8c0b5a","unresolved":false,"context_lines":[{"line_number":460,"context_line":"        self._local.ctxt_mgr \u003d desired"},{"line_number":461,"context_line":"        try:"},{"line_number":462,"context_line":"            with self._real_target_cell(context, cell_mapping) as c:"},{"line_number":463,"context_line":"                yield c"},{"line_number":464,"context_line":"        finally:"},{"line_number":465,"context_line":"            self._local.ctxt_mgr \u003d previous"},{"line_number":466,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"34db8012_c6a6d57b","line":463,"in_reply_to":"591cfcab_b925a4e9","updated":"2026-09-24 08:35:20.000000000","message":"Done","commit_id":"9b0508fa6b0347a851c7c347bbd9a0f1d44b24e4"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"2b9ea3c0eadb002d9f7699e6392752f660ef4da7","unresolved":true,"context_lines":[{"line_number":460,"context_line":"        self._local.ctxt_mgr \u003d desired"},{"line_number":461,"context_line":"        try:"},{"line_number":462,"context_line":"            with self._real_target_cell(context, cell_mapping) as c:"},{"line_number":463,"context_line":"                yield c"},{"line_number":464,"context_line":"        finally:"},{"line_number":465,"context_line":"            self._local.ctxt_mgr \u003d previous"},{"line_number":466,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"591cfcab_b925a4e9","line":463,"in_reply_to":"b5ef5f95_c8487736","updated":"2026-04-15 16:01:52.000000000","message":"Yes, you are right this is not being used 😩 must have been some mess up while iterating on the change locally. I\u0027ll fix this.","commit_id":"9b0508fa6b0347a851c7c347bbd9a0f1d44b24e4"}]}
