)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"5d6e36f552f4483de993ee4dd3a97f5e8becfe76","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8417d31e_ab6c62b4","updated":"2026-08-08 23:04:33.000000000","message":"recheck sdks job failure not related to this","commit_id":"ba0f53ebb134b3dbb455864c7dead3863a4dc056"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f47e540c58e80013322996a0b54c06e8226b1f94","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"aefd98e3_6e0d250f","updated":"2026-08-15 00:59:55.000000000","message":"recheck bug#2163448","commit_id":"d060fb5a8405791b5e3f003b1663b3d9129fa3c0"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"cf0695c21614288e2ab4bd27669a541cd85ed9e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"f7c50806_a45e7e22","updated":"2026-08-15 19:49:44.000000000","message":"recheck ssh timeout in test_image_defined_boot_from_volume","commit_id":"d060fb5a8405791b5e3f003b1663b3d9129fa3c0"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"4b39d6c463e365d9321e519a85229e4b57f14e74","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"bc57960e_cc98f72e","updated":"2026-08-19 21:20:41.000000000","message":"it seems another race in funtional tests in threading mode which is related to this change. fixing that.","commit_id":"a113345e15bc9738f128b2891ec7aa41f1843c1c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7f79cb2bb686b25a791c7dd3eb8c15a1658455e6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"38dd88f8_94c1786b","updated":"2026-08-20 01:28:01.000000000","message":"threading mode job failure are valid, still tests not resetting the shutdown flag","commit_id":"6862570c979b8999b11c0a9814df9e9f30370e31"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"acd662d46754f3748fdce5a44973056f983b016d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"73242c1e_1c0de05c","updated":"2026-08-21 14:57:38.000000000","message":"Suggestion inline about unifying the shutdown stuff which we seem to mostly be repeating, but it\u0027s not critical.","commit_id":"28dfa7616ac157ede50dd9e85c146989de16b10d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c63a7fa6b31b3ae78e1ae97218e85da84feb21c5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"9d82f556_6ab1ee11","updated":"2026-08-20 14:51:44.000000000","message":"recheck bug 2164606","commit_id":"28dfa7616ac157ede50dd9e85c146989de16b10d"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"adb85b4068f7e2d73e5e361d5a2b8e337d3d9d0f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"00cd1469_bab2e2bd","updated":"2026-08-27 03:02:35.000000000","message":"OK so the difference between PS14 and PS15 is changing to use wait\u003dTrue for the shutdown phase, which is to make sure only in-progress work is continued and avoid picking up new work that might be in the queue [1].\n\nUpdate looks good to me and Dan was previously +2 on PS14, so approving.\n\n[1] https://review.opendev.org/c/openstack/nova/+/1000211/comment/b0dae3df_f4a14f36/","commit_id":"f712a55eeb21ddeb6447c243e8faf964db634e77"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6f1dd0f2684c03c16222adb9c75b890dd88a81fd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"9c4c6126_06c341a5","updated":"2026-08-28 14:48:31.000000000","message":"recheck bug https://bugs.launchpad.net/nova/+bug/2165149","commit_id":"f712a55eeb21ddeb6447c243e8faf964db634e77"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"19e112254c871df22ecb6895b9f5f0808c0094b5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"8824abd5_ac50d454","updated":"2026-08-27 21:49:38.000000000","message":"recheck graceful shutdown functional test bug fix is merged during this failure","commit_id":"f712a55eeb21ddeb6447c243e8faf964db634e77"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"85ebec888f05439d95ce40858236f404444cddbf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"ac847fdb_956343db","updated":"2026-08-27 12:58:07.000000000","message":"recheck https://bugs.launchpad.net/nova/+bug/2164880","commit_id":"f712a55eeb21ddeb6447c243e8faf964db634e77"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"6d7eb114fd407f83c5d1927ac091ffb94ad4cd5b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"56301469_7981d141","updated":"2026-08-28 04:39:54.000000000","message":"recheck multi cell jobs ssh timeout","commit_id":"f712a55eeb21ddeb6447c243e8faf964db634e77"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"132171d8b7cacb27a951d1325ba7d808a0be2208","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"8be34d7d_e75cd2b2","updated":"2026-08-27 08:22:56.000000000","message":"recheck neutron\n```\nAug 27 04:20:34.765960 np54509f7e33b44 nova-compute[37592]: ERROR nova.compute.manager [instance: e4cfc7bf-6f09-4e75-b2bb-b4b79f95a412] nova.exception.VirtualInterfaceCreateException: Virtual Interface creation failed\n```","commit_id":"f712a55eeb21ddeb6447c243e8faf964db634e77"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ac41e0c858e1f64448e287120591b02a0a83435c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"141529e8_74efba8c","updated":"2026-08-26 12:30:24.000000000","message":"the tearDown issue should be fixed but that is OK to be done in a follow up.","commit_id":"f712a55eeb21ddeb6447c243e8faf964db634e77"}],"nova/compute/manager.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"acd662d46754f3748fdce5a44973056f983b016d","unresolved":true,"context_lines":[{"line_number":1754,"context_line":"        self.driver.cleanup_host(host\u003dself.host)"},{"line_number":1755,"context_line":"        # At this stage, manager has done with all the tasks/cleanup"},{"line_number":1756,"context_line":"        # and safe to shutdown all the executors so that no new things"},{"line_number":1757,"context_line":"        # can run now."},{"line_number":1758,"context_line":"        # shutdown_all_executors is done after self.driver.cleanup_host"},{"line_number":1759,"context_line":"        # as that shutdown(wait\u003dTrue) the delayed_executors which will"},{"line_number":1760,"context_line":"        # need the main executor to be up to finish the in-progress things."}],"source_content_type":"text/x-python","patch_set":14,"id":"b0dae3df_f4a14f36","line":1757,"updated":"2026-08-21 14:57:38.000000000","message":"Okay, so this goes back to my question about what all could be in `cleanup_host()` which might take a while and need the reserved time you left for it.\n\nThe goal here (which I think is what you\u0027re saying) is that this should ideally be fast because we have tracked all the long-running work via tasks and have waited for those to complete before we even get here. Correct?","commit_id":"28dfa7616ac157ede50dd9e85c146989de16b10d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"89d9717562a0cb88ecf65a6d5ea5a3f1ee7b8937","unresolved":true,"context_lines":[{"line_number":1754,"context_line":"        self.driver.cleanup_host(host\u003dself.host)"},{"line_number":1755,"context_line":"        # At this stage, manager has done with all the tasks/cleanup"},{"line_number":1756,"context_line":"        # and safe to shutdown all the executors so that no new things"},{"line_number":1757,"context_line":"        # can run now."},{"line_number":1758,"context_line":"        # shutdown_all_executors is done after self.driver.cleanup_host"},{"line_number":1759,"context_line":"        # as that shutdown(wait\u003dTrue) the delayed_executors which will"},{"line_number":1760,"context_line":"        # need the main executor to be up to finish the in-progress things."}],"source_content_type":"text/x-python","patch_set":14,"id":"2e3939b4_171cd0d9","line":1757,"in_reply_to":"1bbbebb2_17935b59","updated":"2026-08-25 14:14:19.000000000","message":"//later\nOr if we cannot call shutdown with wait\u003dtrue as that might mean we exceed the shutdown time then does this also true for the \"delayed_executors\"? Will wait\u003dTrue there can return too late?","commit_id":"28dfa7616ac157ede50dd9e85c146989de16b10d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9f7fc673dfbcbe69b243bd88ba8f351c94354594","unresolved":false,"context_lines":[{"line_number":1754,"context_line":"        self.driver.cleanup_host(host\u003dself.host)"},{"line_number":1755,"context_line":"        # At this stage, manager has done with all the tasks/cleanup"},{"line_number":1756,"context_line":"        # and safe to shutdown all the executors so that no new things"},{"line_number":1757,"context_line":"        # can run now."},{"line_number":1758,"context_line":"        # shutdown_all_executors is done after self.driver.cleanup_host"},{"line_number":1759,"context_line":"        # as that shutdown(wait\u003dTrue) the delayed_executors which will"},{"line_number":1760,"context_line":"        # need the main executor to be up to finish the in-progress things."}],"source_content_type":"text/x-python","patch_set":14,"id":"6f4b2291_9d03494d","line":1757,"in_reply_to":"2e3939b4_171cd0d9","updated":"2026-08-25 19:00:05.000000000","message":"I considered the ideal case here where the manager waits for in-progress tasks and will not leave any tasks in executors. But we do timoeut the wait for in-progress tasks and that will make executors shutdown un-graceful.\n\nThanks for the correction about wait\u003dfalse. Yes, it will pick all items from the queue but will not block the main thread. That is the difference from wait\u003dtrue - https://github.com/openstack/futurist/blob/b4290365dd5fbe08bc5d881cb2ae4893eb4e5127/futurist/_futures.py#L238-L243\n\nIf I see from graceful shutdown perspective, blocking main thread/process is right way because if executors are waiting to finish queued things then stopping compute (when wait\u003dfalse) will anyways stop all the threads which means abruptly shuting down executors (as all Futurist threads are daemon threadshttps://github.com/openstack/futurist/blob/b4290365dd5fbe08bc5d881cb2ae4893eb4e5127/futurist/_futures.py#L238-L243)\n\nTwo scenarios will be:\n\nwait\u003dfalse\n- shutdown initiated\n- manager wait for all in-progress tasks.\n  - If this completes all tasks, then executors should be empty, but if not (timeout case), then executors have tasks in the queue.\n- executors shutdown(wait\u003dfalse)\n  - It will continue executing the tasks present in the queue but will not block the main process.\n- compute service stop() continue and oslo.service stop the process\n- As all threads are daemon threads, it will kill all the threads that are executing tasks in executors. It means no real gain of shutting down executors with wait\u003dfalse. Also, this is abrupt termination, not completely graceful.\n\nwait\u003dtrue\n- shutdown initiated\n- manager waits for all in-progress tasks.\n  - If this completes all tasks, then executors should be empty, but if not (timeout case), then executors have tasks in the queue.\n- executors shutdown(wait\u003dtrue)\n  - It will continue executing the tasks present in the queue and will block the main process.\n- compute service stop() will not proceed until all tasks are executed.\n  - This is what is actually gracefully shutting down.\n  - Only case it will be abruptly terminated is timeout where oslo.service or an external system will kill the process, but that is a configurable timeout issue, not our code issue.\n- Once all tasks in executors done then compute service stop() will proceed and oslo.service will stop the process.","commit_id":"28dfa7616ac157ede50dd9e85c146989de16b10d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"fbddd9b25697e5cab5ca3dd69e120cb0765f9fc4","unresolved":false,"context_lines":[{"line_number":1754,"context_line":"        self.driver.cleanup_host(host\u003dself.host)"},{"line_number":1755,"context_line":"        # At this stage, manager has done with all the tasks/cleanup"},{"line_number":1756,"context_line":"        # and safe to shutdown all the executors so that no new things"},{"line_number":1757,"context_line":"        # can run now."},{"line_number":1758,"context_line":"        # shutdown_all_executors is done after self.driver.cleanup_host"},{"line_number":1759,"context_line":"        # as that shutdown(wait\u003dTrue) the delayed_executors which will"},{"line_number":1760,"context_line":"        # need the main executor to be up to finish the in-progress things."}],"source_content_type":"text/x-python","patch_set":14,"id":"d678d00d_a8b17c5f","line":1757,"in_reply_to":"6f4b2291_9d03494d","updated":"2026-08-26 00:21:37.000000000","message":"done in shutdown_all_executors() as default","commit_id":"28dfa7616ac157ede50dd9e85c146989de16b10d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"93ee1175f8e2b42bff049afa7f94dae22fc3237c","unresolved":true,"context_lines":[{"line_number":1754,"context_line":"        self.driver.cleanup_host(host\u003dself.host)"},{"line_number":1755,"context_line":"        # At this stage, manager has done with all the tasks/cleanup"},{"line_number":1756,"context_line":"        # and safe to shutdown all the executors so that no new things"},{"line_number":1757,"context_line":"        # can run now."},{"line_number":1758,"context_line":"        # shutdown_all_executors is done after self.driver.cleanup_host"},{"line_number":1759,"context_line":"        # as that shutdown(wait\u003dTrue) the delayed_executors which will"},{"line_number":1760,"context_line":"        # need the main executor to be up to finish the in-progress things."}],"source_content_type":"text/x-python","patch_set":14,"id":"e0f21866_1f4163c1","line":1757,"in_reply_to":"b0dae3df_f4a14f36","updated":"2026-08-21 15:09:44.000000000","message":"yeah, ideally there should not be anything running in executors as wait-for-in-progress-tasks should finish them. If there is any in queue then we are shutting down executors with wait\u003dfalse so on ongoing will be finished and no new tasks will be pulled from queue.","commit_id":"28dfa7616ac157ede50dd9e85c146989de16b10d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ac41e0c858e1f64448e287120591b02a0a83435c","unresolved":false,"context_lines":[{"line_number":1754,"context_line":"        self.driver.cleanup_host(host\u003dself.host)"},{"line_number":1755,"context_line":"        # At this stage, manager has done with all the tasks/cleanup"},{"line_number":1756,"context_line":"        # and safe to shutdown all the executors so that no new things"},{"line_number":1757,"context_line":"        # can run now."},{"line_number":1758,"context_line":"        # shutdown_all_executors is done after self.driver.cleanup_host"},{"line_number":1759,"context_line":"        # as that shutdown(wait\u003dTrue) the delayed_executors which will"},{"line_number":1760,"context_line":"        # need the main executor to be up to finish the in-progress things."}],"source_content_type":"text/x-python","patch_set":14,"id":"88415e66_0217b415","line":1757,"in_reply_to":"d678d00d_a8b17c5f","updated":"2026-08-26 12:30:24.000000000","message":"thanks","commit_id":"28dfa7616ac157ede50dd9e85c146989de16b10d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c0b1d84263aac33b1426540280116f075c7924bd","unresolved":true,"context_lines":[{"line_number":1754,"context_line":"        self.driver.cleanup_host(host\u003dself.host)"},{"line_number":1755,"context_line":"        # At this stage, manager has done with all the tasks/cleanup"},{"line_number":1756,"context_line":"        # and safe to shutdown all the executors so that no new things"},{"line_number":1757,"context_line":"        # can run now."},{"line_number":1758,"context_line":"        # shutdown_all_executors is done after self.driver.cleanup_host"},{"line_number":1759,"context_line":"        # as that shutdown(wait\u003dTrue) the delayed_executors which will"},{"line_number":1760,"context_line":"        # need the main executor to be up to finish the in-progress things."}],"source_content_type":"text/x-python","patch_set":14,"id":"1bbbebb2_17935b59","line":1757,"in_reply_to":"e0f21866_1f4163c1","updated":"2026-08-25 14:08:06.000000000","message":"\u003e If there is any in queue then we are shutting down executors with wait\u003dfalse so on ongoing will be finished and no new tasks will be pulled from queue.\n\nIf the queue here is the task queue in the executor then the statement is not true. wait\u003dfalse will only prevent submitting new tasks to the executor but does not prevent the executor to pick up an already submitted task from its queue and start executing it in a free worker.","commit_id":"28dfa7616ac157ede50dd9e85c146989de16b10d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c0b1d84263aac33b1426540280116f075c7924bd","unresolved":true,"context_lines":[{"line_number":1759,"context_line":"        # as that shutdown(wait\u003dTrue) the delayed_executors which will"},{"line_number":1760,"context_line":"        # need the main executor to be up to finish the in-progress things."},{"line_number":1761,"context_line":"        try:"},{"line_number":1762,"context_line":"            thread_pool_factory.shutdown_all_executors()"},{"line_number":1763,"context_line":"        except Exception:"},{"line_number":1764,"context_line":"            LOG.exception("},{"line_number":1765,"context_line":"                \u0027%s service failed to shutdown all thread pool executors.\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"ec20e666_cab027e2","line":1762,"updated":"2026-08-25 14:08:06.000000000","message":"could this be called with wait\u003dTrue? I mean if we know that everything needs to finish at this point then that would be logical to me. Or is there a later call with wait\u003dTrue in the codepath?","commit_id":"28dfa7616ac157ede50dd9e85c146989de16b10d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9f7fc673dfbcbe69b243bd88ba8f351c94354594","unresolved":false,"context_lines":[{"line_number":1759,"context_line":"        # as that shutdown(wait\u003dTrue) the delayed_executors which will"},{"line_number":1760,"context_line":"        # need the main executor to be up to finish the in-progress things."},{"line_number":1761,"context_line":"        try:"},{"line_number":1762,"context_line":"            thread_pool_factory.shutdown_all_executors()"},{"line_number":1763,"context_line":"        except Exception:"},{"line_number":1764,"context_line":"            LOG.exception("},{"line_number":1765,"context_line":"                \u0027%s service failed to shutdown all thread pool executors.\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"7d03039a_61f94e17","line":1762,"in_reply_to":"ec20e666_cab027e2","updated":"2026-08-25 19:00:05.000000000","message":"there is no wait\u003dTrue later. as per above discussion, I am changing to wait\u003dTrue which make more sense from graeful shutdown perspective.","commit_id":"28dfa7616ac157ede50dd9e85c146989de16b10d"}],"nova/conductor/manager.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"acd662d46754f3748fdce5a44973056f983b016d","unresolved":true,"context_lines":[{"line_number":229,"context_line":"        except Exception:"},{"line_number":230,"context_line":"            LOG.exception("},{"line_number":231,"context_line":"                \u0027%s service failed to shutdown all thread pool executors.\u0027,"},{"line_number":232,"context_line":"                self.service_name)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"@contextlib.contextmanager"}],"source_content_type":"text/x-python","patch_set":14,"id":"734dd672_9a340618","line":232,"updated":"2026-08-21 14:57:38.000000000","message":"This looks identical among the non-compute services.. I wonder if we should just put this in the base `Manager.graceful_shutdown()` and override it in compute to run the driver cleanup stuff first?","commit_id":"28dfa7616ac157ede50dd9e85c146989de16b10d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"93ee1175f8e2b42bff049afa7f94dae22fc3237c","unresolved":true,"context_lines":[{"line_number":229,"context_line":"        except Exception:"},{"line_number":230,"context_line":"            LOG.exception("},{"line_number":231,"context_line":"                \u0027%s service failed to shutdown all thread pool executors.\u0027,"},{"line_number":232,"context_line":"                self.service_name)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"@contextlib.contextmanager"}],"source_content_type":"text/x-python","patch_set":14,"id":"f862a2a4_3774714f","line":232,"in_reply_to":"734dd672_9a340618","updated":"2026-08-21 15:09:44.000000000","message":"yeah, we can do that. will refactor it if i need to respin it else during next cycle part-3","commit_id":"28dfa7616ac157ede50dd9e85c146989de16b10d"}],"nova/tests/fixtures/nova.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b74b2fb0991fb8b4cdd5bb73eb8da2b84c1320b1","unresolved":true,"context_lines":[{"line_number":1358,"context_line":"        # that flag here too so later tests in this worker can still"},{"line_number":1359,"context_line":"        # create executors. This take care of executors cleanup for the"},{"line_number":1360,"context_line":"        # new test."},{"line_number":1361,"context_line":"        thread_pool_factory.FACTORY._shutdown \u003d False"},{"line_number":1362,"context_line":"        for executor in executors:"},{"line_number":1363,"context_line":"            # NOTE(gibi): we cannot rely on utils.concurrency_mode_threading"},{"line_number":1364,"context_line":"            # as that might have been mocked during the test when the executor"}],"source_content_type":"text/x-python","patch_set":7,"id":"8d5db6b9_1a5a8d38","line":1361,"updated":"2026-08-14 15:35:37.000000000","message":"I agree to fix the cleanup of those tests and here make an effort to raise if _shutdown is set to True making the test cases with improper cleanup visible.","commit_id":"8813ee935d2b95c282ac9d8ad5e4d7a5e429bf75"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"743854723211d07d015c09a9f21e33ccbcaad8f7","unresolved":false,"context_lines":[{"line_number":1358,"context_line":"        # that flag here too so later tests in this worker can still"},{"line_number":1359,"context_line":"        # create executors. This take care of executors cleanup for the"},{"line_number":1360,"context_line":"        # new test."},{"line_number":1361,"context_line":"        thread_pool_factory.FACTORY._shutdown \u003d False"},{"line_number":1362,"context_line":"        for executor in executors:"},{"line_number":1363,"context_line":"            # NOTE(gibi): we cannot rely on utils.concurrency_mode_threading"},{"line_number":1364,"context_line":"            # as that might have been mocked during the test when the executor"}],"source_content_type":"text/x-python","patch_set":7,"id":"56585cb9_c570d5ed","line":1361,"in_reply_to":"0fb1977b_efa09a7c","updated":"2026-08-19 17:11:02.000000000","message":"Done","commit_id":"8813ee935d2b95c282ac9d8ad5e4d7a5e429bf75"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"503b6132ffd70650172b038d8713f4c1329c4aaa","unresolved":true,"context_lines":[{"line_number":1358,"context_line":"        # that flag here too so later tests in this worker can still"},{"line_number":1359,"context_line":"        # create executors. This take care of executors cleanup for the"},{"line_number":1360,"context_line":"        # new test."},{"line_number":1361,"context_line":"        thread_pool_factory.FACTORY._shutdown \u003d False"},{"line_number":1362,"context_line":"        for executor in executors:"},{"line_number":1363,"context_line":"            # NOTE(gibi): we cannot rely on utils.concurrency_mode_threading"},{"line_number":1364,"context_line":"            # as that might have been mocked during the test when the executor"}],"source_content_type":"text/x-python","patch_set":7,"id":"0fb1977b_efa09a7c","line":1361,"in_reply_to":"8d5db6b9_1a5a8d38","updated":"2026-08-14 16:40:20.000000000","message":"around 40 test failing for this but yeah its test responsibility to cleanup the things at the end and not leave it to global cleanup. let me identify the test and fix there.","commit_id":"8813ee935d2b95c282ac9d8ad5e4d7a5e429bf75"}],"nova/tests/unit/test_thread_pool_factory.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"486d19dba138a0a64ab8b082576b47e0762ba881","unresolved":false,"context_lines":[{"line_number":357,"context_line":""},{"line_number":358,"context_line":"    def setUp(self):"},{"line_number":359,"context_line":"        super().setUp()"},{"line_number":360,"context_line":"        self.useFixture(fixtures.MockPatchObject("},{"line_number":361,"context_line":"            thread_pool_factory.FACTORY, \u0027_shutdown\u0027, False))"},{"line_number":362,"context_line":""},{"line_number":363,"context_line":"    def test_get_executor_is_tracked(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"8811df80_316eb7a4","line":360,"updated":"2026-08-19 05:27:25.000000000","message":"pep8: F821 undefined name \u0027fixtures\u0027","commit_id":"fe632a8dd269051f6f728446bffefb9ba741fb02"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ac41e0c858e1f64448e287120591b02a0a83435c","unresolved":true,"context_lines":[{"line_number":436,"context_line":""},{"line_number":437,"context_line":"class ShutdownAllExecutorsTestCase(test.NoDBTestCase):"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"    def tearDown(self):"},{"line_number":440,"context_line":"        super().tearDown()"},{"line_number":441,"context_line":"        # NOTE(gmaan): thread_pool_factory.FACTORY is a process-wide singleton,"},{"line_number":442,"context_line":"        # so calling shutdown_all_executors() in the tests below permanently"}],"source_content_type":"text/x-python","patch_set":15,"id":"61edcd0c_3fac63d7","line":439,"updated":"2026-08-26 12:30:24.000000000","message":"tearDown is not called if the test case fail during setUp(). If you want to make sure this is always called you need to use self.addCleanup() instead.","commit_id":"f712a55eeb21ddeb6447c243e8faf964db634e77"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a77506916eb38e29c3e63afd33242ce3f01f7a57","unresolved":true,"context_lines":[{"line_number":436,"context_line":""},{"line_number":437,"context_line":"class ShutdownAllExecutorsTestCase(test.NoDBTestCase):"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"    def tearDown(self):"},{"line_number":440,"context_line":"        super().tearDown()"},{"line_number":441,"context_line":"        # NOTE(gmaan): thread_pool_factory.FACTORY is a process-wide singleton,"},{"line_number":442,"context_line":"        # so calling shutdown_all_executors() in the tests below permanently"}],"source_content_type":"text/x-python","patch_set":15,"id":"46aa95ee_0ea6748f","line":439,"in_reply_to":"61edcd0c_3fac63d7","updated":"2026-08-26 15:08:33.000000000","message":"I think that is fine as setUp does not call shutdown_all_executors or set this flag.","commit_id":"f712a55eeb21ddeb6447c243e8faf964db634e77"}]}
