)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5c4439629960262d7091bb403d5beacb01cb21b5","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"As per the part1 of the graceful shutdown[1], this commit:"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"- Override the graceful_shutdown_timeout to 180."},{"line_number":12,"context_line":"- Add a new config option for manager shutdown timeout."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"It also adds graceful_shutdown() method on manager side which will be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"b1dbf0dc_17647c3a","line":11,"updated":"2026-02-05 13:27:57.000000000","message":"nit: Override the default of the graceful_shutdown_timeout to 180.","commit_id":"2a8eb1b5af173ff4d0edef8f816b21ab64d61969"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9eada1a16d162705cb1975b762180d3c1c3b8773","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"As per the part1 of the graceful shutdown[1], this commit:"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"- Override the graceful_shutdown_timeout to 180."},{"line_number":12,"context_line":"- Add a new config option for manager shutdown timeout."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"It also adds graceful_shutdown() method on manager side which will be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"072cdc26_4b0e3d29","line":11,"in_reply_to":"b1dbf0dc_17647c3a","updated":"2026-02-05 20:30:11.000000000","message":"Done","commit_id":"2a8eb1b5af173ff4d0edef8f816b21ab64d61969"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5c4439629960262d7091bb403d5beacb01cb21b5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"a9205699_3eecf4d6","updated":"2026-02-05 13:27:57.000000000","message":"I have couple of things inline","commit_id":"2a8eb1b5af173ff4d0edef8f816b21ab64d61969"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"1ab2384c6edaf0fb55a0bb7d0e965bb4c9cb42f7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"79d707b5_c0941eb0","updated":"2026-02-04 02:03:21.000000000","message":"need to test it with oslo change","commit_id":"2a8eb1b5af173ff4d0edef8f816b21ab64d61969"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9eada1a16d162705cb1975b762180d3c1c3b8773","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7e04a53e_5442de3f","updated":"2026-02-05 20:30:11.000000000","message":"thanks for review, will upload the new version once my testing is done","commit_id":"2a8eb1b5af173ff4d0edef8f816b21ab64d61969"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a61d2a67009709126d62c212ff79e14e34fbfd43","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a407e34f_011c2f98","updated":"2026-02-12 02:23:15.000000000","message":"It will need the new oslo.service release which will have https://review.opendev.org/c/openstack/oslo.service/+/975574 needed for this change.","commit_id":"1c1ac181b45bc093b243a71088e8cfffe2ac1ca8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"bbec2e345340a19ccd24d28b92bb1d38827c4211","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ee8fb94e_b5f85b5f","updated":"2026-02-16 20:17:47.000000000","message":"unit/functional test timeout is valid. I need to mock the manager graceful_shutodwn() method which takes 150 sec wait by default.","commit_id":"97e4c270e8a73d4ba25d1c783a7706f4a5cda13f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"98272f1d987f2189d12afb9695784d603a352727","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"8e0edce7_5192158b","updated":"2026-02-18 13:18:04.000000000","message":"* Do we have plans in phase1 to gracefully teminate novncproxy or other console proxies? At least the WebSockifyServer has a terminate() function for graceful shutdown but I\u0027m not sure it is fully exposed to us today.\n* Do we have plans for nova-api and nova-metadata in phase1?","commit_id":"1d2215bc67686a49b81be43fa5c71a874215ec95"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f89d3dd127124b5554ec351c0c9557b655551a90","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"29b26ec8_c9856f1d","updated":"2026-02-17 22:36:17.000000000","message":"recheck live migration ceph job is fixed","commit_id":"1d2215bc67686a49b81be43fa5c71a874215ec95"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7309b329236ca83d5b9d24222156a95c9ca5a6d6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"c269d3f1_6e5f17cb","updated":"2026-02-17 16:04:56.000000000","message":"recheck qemu crash dump","commit_id":"1d2215bc67686a49b81be43fa5c71a874215ec95"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0fb55486030635827ffa56ebbc21615bee95a994","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"93b3c1f0_0d425ab4","updated":"2026-02-17 17:47:35.000000000","message":"this is ready for review, live migration ceph job seems 100% failing but not related to this change","commit_id":"1d2215bc67686a49b81be43fa5c71a874215ec95"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fc326801e5f6b73c60c345126a7067f849f4a667","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ffb81182_bba38f7e","in_reply_to":"10ad2d4d_fe365d31","updated":"2026-02-19 11:47:55.000000000","message":"cool. Thanks for the explanation.","commit_id":"1d2215bc67686a49b81be43fa5c71a874215ec95"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"553172e5efeef42f24ce59abf570602c040204b7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"10ad2d4d_fe365d31","in_reply_to":"8e0edce7_5192158b","updated":"2026-02-18 20:05:24.000000000","message":"\u003e * Do we have plans in phase1 to gracefully teminate novncproxy or other console proxies? At least the WebSockifyServer has a terminate() function for graceful shutdown but I\u0027m not sure it is fully exposed to us today.\n\nIt is handled currently. websockify handle the SIGTERM signal and call WebSockifyServer.terminate()[1] which will terminate all the child processes and then raise the terminate exception, which ends up raising error in do_proxy() loop and it call Nova _close_connection()[2] method. Nova _close_connection()[3] method calls shutdown() on the socket first and then close(), which makes sure to send the remaining data/frame before closing the socket.\n\n[1] https://github.com/novnc/websockify/blob/a4d6cc5588846ce5405d6da2c8e855a0f504432d/websockify/websockifyserver.py#L701\n[2] https://github.com/openstack/nova/blob/7dd05b7af65bd67523c1c475f712d6fbdc6d28fc/nova/console/websocketproxy.py#L285\n[3 ]https://github.com/openstack/nova/blob/7dd05b7af65bd67523c1c475f712d6fbdc6d28fc/nova/console/websocketproxy.py#L150\n\n\u003e * Do we have plans for nova-api and nova-metadata in phase1?\n\nNothing needed on API services, their graceful shutdown will be handled by the server they are deployed on. For uWSGI  server case, when shutdown is initiated, the uWSGI server SIGTERM handler check if there are any in-progress request on any worker. It wait for all the workers to finish the request before it terminates each worker. Once all worker are terminated then it will terminate the Nova API service.","commit_id":"1d2215bc67686a49b81be43fa5c71a874215ec95"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fc326801e5f6b73c60c345126a7067f849f4a667","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"054e9b79_426e21fe","updated":"2026-02-19 11:47:55.000000000","message":"Looks good","commit_id":"1c1e97a05e9664260048d72f9ca9108a54d797c3"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"59a593112049609c63f848c18546f506e15ab48c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"1476bd32_65d82a19","updated":"2026-02-18 23:11:40.000000000","message":"recheck ceph job failure","commit_id":"1c1e97a05e9664260048d72f9ca9108a54d797c3"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a06305c0a9dbdd5622077b9f28ba783bbc1e2918","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"fd7e1ff6_188bb636","updated":"2026-02-19 15:57:36.000000000","message":"sure we could do a follow-up with my concerns but at least I\u0027d like the config option doc to be correctly written 😊","commit_id":"1c1e97a05e9664260048d72f9ca9108a54d797c3"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d27357de2a45c384dc6cacbdb5eee25e34b6897c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"08199205_2ef7ea2f","in_reply_to":"fd7e1ff6_188bb636","updated":"2026-02-19 16:57:05.000000000","message":"thanks for review, let me update it in this change itself as I need to change other change in this series.","commit_id":"1c1e97a05e9664260048d72f9ca9108a54d797c3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"199e7c9aa37844ffd8eeacefc7aeb96aa65537f8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"e5c5151c_e2cdafd6","updated":"2026-02-23 17:20:24.000000000","message":"I have one follow up request to avoid a small bug. Otherwise looks good","commit_id":"2fb9113ed2fe9d78164122a58c1af46c87dfa8b9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d1db253df1523c6fe4806f2a5e61cee76e917695","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"7c5b40bd_0255f94f","updated":"2026-02-24 15:32:35.000000000","message":"Lets get this landed.","commit_id":"2fb9113ed2fe9d78164122a58c1af46c87dfa8b9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0942cdfcff06ffe7482ff519f8ed15e912c78c2b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"64d2d30e_d70248d6","updated":"2026-02-23 18:05:02.000000000","message":"agreed with gibi","commit_id":"2fb9113ed2fe9d78164122a58c1af46c87dfa8b9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e421947dd95c7e87c1cbf49ed7bee45aae2b4e4a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"ee0fed4b_b4edf700","updated":"2026-02-21 02:52:50.000000000","message":"recheck 503 in test_update_volume_with_empty_volume_id which is not related","commit_id":"2fb9113ed2fe9d78164122a58c1af46c87dfa8b9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"10bb6f2d605ea8e791f3357fb536a2e3523f4684","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"43caa4c0_43b18ad7","updated":"2026-02-20 18:15:38.000000000","message":"recheck nova-next job","commit_id":"2fb9113ed2fe9d78164122a58c1af46c87dfa8b9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"12a57bc8e317087550ed8a05a0bd9c8944d29cec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"e80fd49a_6a222800","updated":"2026-02-20 03:50:48.000000000","message":"recheck test_submit_second_while_delaying_first is fixed by https://review.opendev.org/c/openstack/oslo.service/+/977241","commit_id":"2fb9113ed2fe9d78164122a58c1af46c87dfa8b9"}],"nova/compute/manager.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"98272f1d987f2189d12afb9695784d603a352727","unresolved":true,"context_lines":[{"line_number":1826,"context_line":"        time.sleep(CONF.manager_shutdown_timeout)"},{"line_number":1827,"context_line":""},{"line_number":1828,"context_line":"        # Cleanup host will be the last step of manager graceful_shutdown"},{"line_number":1829,"context_line":"        self.cleanup_host()"},{"line_number":1830,"context_line":""},{"line_number":1831,"context_line":"    def cleanup_host(self):"},{"line_number":1832,"context_line":"        self.driver.register_event_listener(None)"}],"source_content_type":"text/x-python","patch_set":6,"id":"6395337f_4d5ec2d5","line":1829,"updated":"2026-02-18 13:18:04.000000000","message":"yeah this is good for now. I think we can re-think this a but and split cleanup_host into two calls in phase2. Like shutting down the live_migration_executor can be done in two steps. First shutdown without waiting for its completion to prevent new migration to be added, and then at the end waiting for the completion of all tasks in the executor.","commit_id":"1d2215bc67686a49b81be43fa5c71a874215ec95"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"553172e5efeef42f24ce59abf570602c040204b7","unresolved":false,"context_lines":[{"line_number":1826,"context_line":"        time.sleep(CONF.manager_shutdown_timeout)"},{"line_number":1827,"context_line":""},{"line_number":1828,"context_line":"        # Cleanup host will be the last step of manager graceful_shutdown"},{"line_number":1829,"context_line":"        self.cleanup_host()"},{"line_number":1830,"context_line":""},{"line_number":1831,"context_line":"    def cleanup_host(self):"},{"line_number":1832,"context_line":"        self.driver.register_event_listener(None)"}],"source_content_type":"text/x-python","patch_set":6,"id":"41348b80_bf18e836","line":1829,"in_reply_to":"6395337f_4d5ec2d5","updated":"2026-02-18 20:05:24.000000000","message":"yes, in phase2, I will refactor it bit more and to accomodate the executors shutdown. Idea is to shutdown the executors with wait\u003dTrue (so that ongoing tasks can be finished). Only thing I need to check if any of the in-progress tasks need the executor (like one PRC server) to stay active to start other required tasks. For example, maybe the default executor can be kept active and shut down at the end (but if that is really needed, which I need to audit).\n\nBut yes, phase2 will be doing/adding more things in graceful_shutdown() and in correct order, and that time we will refactor cleanup_host also.","commit_id":"1d2215bc67686a49b81be43fa5c71a874215ec95"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a06305c0a9dbdd5622077b9f28ba783bbc1e2918","unresolved":true,"context_lines":[{"line_number":1823,"context_line":"        # replaced by the better solution to finish in-progress tasks."},{"line_number":1824,"context_line":"        LOG.debug(\u0027Compute service manager is waiting for %s seconds to \u0027"},{"line_number":1825,"context_line":"                  \u0027finish in-progress tasks\u0027, CONF.manager_shutdown_timeout)"},{"line_number":1826,"context_line":"        time.sleep(CONF.manager_shutdown_timeout)"},{"line_number":1827,"context_line":""},{"line_number":1828,"context_line":"        # Cleanup host will be the last step of manager graceful_shutdown"},{"line_number":1829,"context_line":"        self.cleanup_host()"}],"source_content_type":"text/x-python","patch_set":7,"id":"2d341895_a23902cf","line":1826,"updated":"2026-02-19 15:57:36.000000000","message":"there is no validation here that CONF.manager_shutdown_timeout is lower than CONF.graceful_shutdown_timeout.\nIf for example, graceful timeout is 120sec and default manager timeout is still 160sec, then we would make the compute manager sleep for 160 secs but after 120sec we would send a SIGKILL","commit_id":"1c1e97a05e9664260048d72f9ca9108a54d797c3"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d27357de2a45c384dc6cacbdb5eee25e34b6897c","unresolved":false,"context_lines":[{"line_number":1823,"context_line":"        # replaced by the better solution to finish in-progress tasks."},{"line_number":1824,"context_line":"        LOG.debug(\u0027Compute service manager is waiting for %s seconds to \u0027"},{"line_number":1825,"context_line":"                  \u0027finish in-progress tasks\u0027, CONF.manager_shutdown_timeout)"},{"line_number":1826,"context_line":"        time.sleep(CONF.manager_shutdown_timeout)"},{"line_number":1827,"context_line":""},{"line_number":1828,"context_line":"        # Cleanup host will be the last step of manager graceful_shutdown"},{"line_number":1829,"context_line":"        self.cleanup_host()"}],"source_content_type":"text/x-python","patch_set":7,"id":"bcbdd639_dee2e609","line":1826,"in_reply_to":"2d341895_a23902cf","updated":"2026-02-19 16:57:05.000000000","message":"true, In that case, yes manager graceful_shutdown will be interupted and it will stop the compute service which is ok as that is what operator configured.\n\nI can add a validation here and also add a warning for more visibility of how operator should set these options.","commit_id":"1c1e97a05e9664260048d72f9ca9108a54d797c3"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0942cdfcff06ffe7482ff519f8ed15e912c78c2b","unresolved":false,"context_lines":[{"line_number":1829,"context_line":"                        CONF.graceful_shutdown_timeout)"},{"line_number":1830,"context_line":"            sleep_time \u003d CONF.graceful_shutdown_timeout - 10"},{"line_number":1831,"context_line":"        else:"},{"line_number":1832,"context_line":"            sleep_time \u003d CONF.manager_shutdown_timeout"},{"line_number":1833,"context_line":"        LOG.debug(\u0027Compute service manager is waiting for %s seconds to \u0027"},{"line_number":1834,"context_line":"                  \u0027finish in-progress tasks\u0027, sleep_time)"},{"line_number":1835,"context_line":"        time.sleep(sleep_time)"}],"source_content_type":"text/x-python","patch_set":9,"id":"63346d5c_f4a817cb","line":1832,"updated":"2026-02-23 18:05:02.000000000","message":"++","commit_id":"2fb9113ed2fe9d78164122a58c1af46c87dfa8b9"}],"nova/conductor/manager.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"98272f1d987f2189d12afb9695784d603a352727","unresolved":true,"context_lines":[{"line_number":215,"context_line":"        LOG.debug(\u0027Conductor service manager is waiting for %s seconds to \u0027"},{"line_number":216,"context_line":"                  \u0027finish in-progress tasks\u0027,"},{"line_number":217,"context_line":"                  CONF.manager_shutdown_timeout)"},{"line_number":218,"context_line":"        time.sleep(CONF.manager_shutdown_timeout)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"@contextlib.contextmanager"}],"source_content_type":"text/x-python","patch_set":6,"id":"4d537b75_2374b6af","line":218,"updated":"2026-02-18 13:18:04.000000000","message":"good as is now. In phase2 we might want to think about how to make sure we are unblocking the conductor if it is waiting on a response for an RPC call to the compute / scheduler while the conductor is being requested to shut down.","commit_id":"1d2215bc67686a49b81be43fa5c71a874215ec95"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"553172e5efeef42f24ce59abf570602c040204b7","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        LOG.debug(\u0027Conductor service manager is waiting for %s seconds to \u0027"},{"line_number":216,"context_line":"                  \u0027finish in-progress tasks\u0027,"},{"line_number":217,"context_line":"                  CONF.manager_shutdown_timeout)"},{"line_number":218,"context_line":"        time.sleep(CONF.manager_shutdown_timeout)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"@contextlib.contextmanager"}],"source_content_type":"text/x-python","patch_set":6,"id":"8b9deb2b_a14735cb","line":218,"in_reply_to":"4d537b75_2374b6af","updated":"2026-02-18 20:05:24.000000000","message":"yes, that will be done via task tracking and if anything is in-progress or conductor is waiting then we need to wait. Because conductor RPC server is stopped at this time, we need to make sure the reply queue is enough for conductor to get/send the response from/to comoute/sch serviecs. \n\nSame for scheduler also. If say select destination is in-progress on sch side then, we will wait for that to finish and sch reply to conductor via reply queue before sch service is stopped.","commit_id":"1d2215bc67686a49b81be43fa5c71a874215ec95"}],"nova/conf/base.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5c4439629960262d7091bb403d5beacb01cb21b5","unresolved":true,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# NOTE(gmaan): \u0027graceful_shutdown_timeout\u0027 is defined in oslo.service with"},{"line_number":23,"context_line":"# default value of 60 which is less for the Nova services to gracefully"},{"line_number":24,"context_line":"# shutdown. Override its default here which will be applicable for all Nova"},{"line_number":25,"context_line":"# services."},{"line_number":26,"context_line":"NOVA_DEFAULT_GRACEFUL_SHUTDOWN_TIMEOUT \u003d 180"},{"line_number":27,"context_line":"_options.set_service_opts_defaults("}],"source_content_type":"text/x-python","patch_set":2,"id":"3bb2dba9_a79daf17","line":24,"range":{"start_line":23,"start_character":22,"end_line":24,"end_character":11},"updated":"2026-02-05 13:27:57.000000000","message":"nit: which is too low for Nova services","commit_id":"2a8eb1b5af173ff4d0edef8f816b21ab64d61969"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9eada1a16d162705cb1975b762180d3c1c3b8773","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# NOTE(gmaan): \u0027graceful_shutdown_timeout\u0027 is defined in oslo.service with"},{"line_number":23,"context_line":"# default value of 60 which is less for the Nova services to gracefully"},{"line_number":24,"context_line":"# shutdown. Override its default here which will be applicable for all Nova"},{"line_number":25,"context_line":"# services."},{"line_number":26,"context_line":"NOVA_DEFAULT_GRACEFUL_SHUTDOWN_TIMEOUT \u003d 180"},{"line_number":27,"context_line":"_options.set_service_opts_defaults("}],"source_content_type":"text/x-python","patch_set":2,"id":"b1fda64b_93ea82c2","line":24,"range":{"start_line":23,"start_character":22,"end_line":24,"end_character":11},"in_reply_to":"3bb2dba9_a79daf17","updated":"2026-02-05 20:30:11.000000000","message":"Done","commit_id":"2a8eb1b5af173ff4d0edef8f816b21ab64d61969"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5c4439629960262d7091bb403d5beacb01cb21b5","unresolved":true,"context_lines":[{"line_number":121,"context_line":"\u0027\u0027\u0027),"},{"line_number":122,"context_line":"    cfg.IntOpt("},{"line_number":123,"context_line":"        \u0027manager_shutdown_timeout\u0027,"},{"line_number":124,"context_line":"        default\u003d150,"},{"line_number":125,"context_line":"        help\u003d\"\"\""},{"line_number":126,"context_line":"Specifies the total time in seconds for the manager to complete the"},{"line_number":127,"context_line":"in-progress tasks. During a graceful shutdown, the manager will"}],"source_content_type":"text/x-python","patch_set":2,"id":"fc1e3069_560d9ccb","line":124,"updated":"2026-02-05 13:27:57.000000000","message":"We should set the min to 0 here otherwise one can think of a negative timeout means forever but time.sleep fails on negative values\n```\n\u003e\u003e\u003e time.sleep(-1)\nTraceback (most recent call last):\n  File \"\u003cpython-input-2\u003e\", line 1, in \u003cmodule\u003e\n    time.sleep(-1)\n    ~~~~~~~~~~^^^^\nValueError: sleep length must be non-negative\n\n```","commit_id":"2a8eb1b5af173ff4d0edef8f816b21ab64d61969"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9eada1a16d162705cb1975b762180d3c1c3b8773","unresolved":false,"context_lines":[{"line_number":121,"context_line":"\u0027\u0027\u0027),"},{"line_number":122,"context_line":"    cfg.IntOpt("},{"line_number":123,"context_line":"        \u0027manager_shutdown_timeout\u0027,"},{"line_number":124,"context_line":"        default\u003d150,"},{"line_number":125,"context_line":"        help\u003d\"\"\""},{"line_number":126,"context_line":"Specifies the total time in seconds for the manager to complete the"},{"line_number":127,"context_line":"in-progress tasks. During a graceful shutdown, the manager will"}],"source_content_type":"text/x-python","patch_set":2,"id":"c0c81a8e_7b118c6b","line":124,"in_reply_to":"fc1e3069_560d9ccb","updated":"2026-02-05 20:30:11.000000000","message":"Done","commit_id":"2a8eb1b5af173ff4d0edef8f816b21ab64d61969"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a06305c0a9dbdd5622077b9f28ba783bbc1e2918","unresolved":true,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":"* 0: The compute manager does not wait to finish in-progress tasks."},{"line_number":138,"context_line":"* A positive integer: Number of seconds the manager waits before the service"},{"line_number":139,"context_line":"                      stops (The default value is 150)."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"Related options:"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5acf54f5_b92e60af","line":139,"range":{"start_line":139,"start_character":50,"end_line":139,"end_character":53},"updated":"2026-02-19 15:57:36.000000000","message":"nope, I can read that default is 160 secs ;-)","commit_id":"1c1e97a05e9664260048d72f9ca9108a54d797c3"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d27357de2a45c384dc6cacbdb5eee25e34b6897c","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":"* 0: The compute manager does not wait to finish in-progress tasks."},{"line_number":138,"context_line":"* A positive integer: Number of seconds the manager waits before the service"},{"line_number":139,"context_line":"                      stops (The default value is 150)."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"Related options:"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"d521f425_1bd0073b","line":139,"range":{"start_line":139,"start_character":50,"end_line":139,"end_character":53},"in_reply_to":"5acf54f5_b92e60af","updated":"2026-02-19 16:57:05.000000000","message":"oh, thanks for catching. done","commit_id":"1c1e97a05e9664260048d72f9ca9108a54d797c3"}],"nova/scheduler/manager.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"98272f1d987f2189d12afb9695784d603a352727","unresolved":true,"context_lines":[{"line_number":169,"context_line":"        LOG.debug(\u0027Scheduler service manager is waiting for %s seconds to \u0027"},{"line_number":170,"context_line":"                  \u0027finish in-progress tasks\u0027,"},{"line_number":171,"context_line":"                  CONF.manager_shutdown_timeout)"},{"line_number":172,"context_line":"        time.sleep(CONF.manager_shutdown_timeout)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    @messaging.expected_exceptions(exception.NoValidHost)"},{"line_number":175,"context_line":"    def select_destinations("}],"source_content_type":"text/x-python","patch_set":6,"id":"5fb74069_40300a68","line":172,"updated":"2026-02-18 13:18:04.000000000","message":"good for now. In phase2 we need to think about how to unblock a scheduler waiting for the response of a Placement API call while the scheduler is requested to shut down.","commit_id":"1d2215bc67686a49b81be43fa5c71a874215ec95"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"553172e5efeef42f24ce59abf570602c040204b7","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        LOG.debug(\u0027Scheduler service manager is waiting for %s seconds to \u0027"},{"line_number":170,"context_line":"                  \u0027finish in-progress tasks\u0027,"},{"line_number":171,"context_line":"                  CONF.manager_shutdown_timeout)"},{"line_number":172,"context_line":"        time.sleep(CONF.manager_shutdown_timeout)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    @messaging.expected_exceptions(exception.NoValidHost)"},{"line_number":175,"context_line":"    def select_destinations("}],"source_content_type":"text/x-python","patch_set":6,"id":"5d51f1c0_69c0bfc7","line":172,"in_reply_to":"5fb74069_40300a68","updated":"2026-02-18 20:05:24.000000000","message":"yeah, that will part of task tracking and overall in-progress tasks are finished or not which include the response from placement. I have not thought exactly how we will track the tasks and mark finish but something I will me researching on for phase2.","commit_id":"1d2215bc67686a49b81be43fa5c71a874215ec95"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"199e7c9aa37844ffd8eeacefc7aeb96aa65537f8","unresolved":true,"context_lines":[{"line_number":172,"context_line":"                        \u0027killed before the manager finishes waiting.\u0027,"},{"line_number":173,"context_line":"                        CONF.manager_shutdown_timeout,"},{"line_number":174,"context_line":"                        CONF.graceful_shutdown_timeout)"},{"line_number":175,"context_line":"            sleep_time \u003d CONF.graceful_shutdown_timeout - 10"},{"line_number":176,"context_line":"        else:"},{"line_number":177,"context_line":"            sleep_time \u003d CONF.manager_shutdown_timeout"},{"line_number":178,"context_line":"        LOG.debug(\u0027Scheduler service manager is waiting for %s seconds to \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"d5e3a603_0c746704","line":175,"updated":"2026-02-23 17:20:24.000000000","message":"In a unlikely case that gracefuld-shutdown_timeout is set to less than 10 this will lead to time.sleep() failing on negative value.\n\nI understand that we don\u0027t want to use graceful_shutdown_timeout directly as the timer already started for that before we get killed here so we need strictly smaller value. So I suggest that in a follow up check if the sleep_time is negative after this subtraction and if so then clamp it to 0.","commit_id":"2fb9113ed2fe9d78164122a58c1af46c87dfa8b9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2dc881d2e731303a9ee1335ce29bf647525766d7","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                        \u0027killed before the manager finishes waiting.\u0027,"},{"line_number":173,"context_line":"                        CONF.manager_shutdown_timeout,"},{"line_number":174,"context_line":"                        CONF.graceful_shutdown_timeout)"},{"line_number":175,"context_line":"            sleep_time \u003d CONF.graceful_shutdown_timeout - 10"},{"line_number":176,"context_line":"        else:"},{"line_number":177,"context_line":"            sleep_time \u003d CONF.manager_shutdown_timeout"},{"line_number":178,"context_line":"        LOG.debug(\u0027Scheduler service manager is waiting for %s seconds to \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"60210e9d_1d35043a","line":175,"in_reply_to":"d5af9cc5_31af105c","updated":"2026-02-23 18:55:44.000000000","message":"thanks. fixing in https://review.opendev.org/c/openstack/nova/+/977708","commit_id":"2fb9113ed2fe9d78164122a58c1af46c87dfa8b9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"58d9ec01fd8b377ff1238d3cfef5a032c4a8f272","unresolved":true,"context_lines":[{"line_number":172,"context_line":"                        \u0027killed before the manager finishes waiting.\u0027,"},{"line_number":173,"context_line":"                        CONF.manager_shutdown_timeout,"},{"line_number":174,"context_line":"                        CONF.graceful_shutdown_timeout)"},{"line_number":175,"context_line":"            sleep_time \u003d CONF.graceful_shutdown_timeout - 10"},{"line_number":176,"context_line":"        else:"},{"line_number":177,"context_line":"            sleep_time \u003d CONF.manager_shutdown_timeout"},{"line_number":178,"context_line":"        LOG.debug(\u0027Scheduler service manager is waiting for %s seconds to \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"8d138e39_0caa1d25","line":175,"in_reply_to":"d5e3a603_0c746704","updated":"2026-02-23 17:58:15.000000000","message":"oh, you are right, i missed that case. will fix it in followup","commit_id":"2fb9113ed2fe9d78164122a58c1af46c87dfa8b9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0942cdfcff06ffe7482ff519f8ed15e912c78c2b","unresolved":true,"context_lines":[{"line_number":172,"context_line":"                        \u0027killed before the manager finishes waiting.\u0027,"},{"line_number":173,"context_line":"                        CONF.manager_shutdown_timeout,"},{"line_number":174,"context_line":"                        CONF.graceful_shutdown_timeout)"},{"line_number":175,"context_line":"            sleep_time \u003d CONF.graceful_shutdown_timeout - 10"},{"line_number":176,"context_line":"        else:"},{"line_number":177,"context_line":"            sleep_time \u003d CONF.manager_shutdown_timeout"},{"line_number":178,"context_line":"        LOG.debug(\u0027Scheduler service manager is waiting for %s seconds to \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"d5af9cc5_31af105c","line":175,"in_reply_to":"d5e3a603_0c746704","updated":"2026-02-23 18:05:02.000000000","message":"this config option is overriden and hardcoded by default to 180 as modified in conf/base.py but I agree this can be defined to 10, so yeah we should cap this.\n(I checked and there is no way to change the min value of the IntOpt, ideally it should be 10)","commit_id":"2fb9113ed2fe9d78164122a58c1af46c87dfa8b9"}],"nova/service.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5c4439629960262d7091bb403d5beacb01cb21b5","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c903ab8a_c532b862","updated":"2026-02-05 13:27:57.000000000","message":"I think we are missing test coverage for the changes in this file","commit_id":"2a8eb1b5af173ff4d0edef8f816b21ab64d61969"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"1ae286acc46ef6b1a66e0d8cb53e02dadd49face","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d3df7d2a_86329814","in_reply_to":"907e0980_cafe7d81","updated":"2026-02-12 02:15:29.000000000","message":"Done","commit_id":"2a8eb1b5af173ff4d0edef8f816b21ab64d61969"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9eada1a16d162705cb1975b762180d3c1c3b8773","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"907e0980_cafe7d81","in_reply_to":"c903ab8a_c532b862","updated":"2026-02-05 20:30:11.000000000","message":"ack, will add.","commit_id":"2a8eb1b5af173ff4d0edef8f816b21ab64d61969"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5c4439629960262d7091bb403d5beacb01cb21b5","unresolved":true,"context_lines":[{"line_number":317,"context_line":"            self.rpcserver.wait()"},{"line_number":318,"context_line":"            LOG.debug(\u0027%s service stopped RPC server on topic: %s\u0027,"},{"line_number":319,"context_line":"                      self.binary, self.topic)"},{"line_number":320,"context_line":"            if self.rpcserver_alt is not None:"},{"line_number":321,"context_line":"                try:"},{"line_number":322,"context_line":"                    LOG.debug(\u0027%s service is waiting to finish \u0027"},{"line_number":323,"context_line":"                              \u0027in-progress tasks...\u0027, self.binary)"},{"line_number":324,"context_line":"                    self.manager.graceful_shutdown()"},{"line_number":325,"context_line":"                except Exception as exc:"},{"line_number":326,"context_line":"                    LOG.exception(\u0027Service error occurred during manager \u0027"},{"line_number":327,"context_line":"                                  \u0027graceful shutdown, Error: %s\u0027, str(exc))"},{"line_number":328,"context_line":"                    pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"afd1b766_138429aa","line":325,"range":{"start_line":320,"start_character":0,"end_line":325,"end_character":40},"updated":"2026-02-05 13:27:57.000000000","message":"It feels strange that we are added the hooks to all our managers but we will only call the hook for the compute manager as that is the only service having a secondary RPC server.","commit_id":"2a8eb1b5af173ff4d0edef8f816b21ab64d61969"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9eada1a16d162705cb1975b762180d3c1c3b8773","unresolved":false,"context_lines":[{"line_number":317,"context_line":"            self.rpcserver.wait()"},{"line_number":318,"context_line":"            LOG.debug(\u0027%s service stopped RPC server on topic: %s\u0027,"},{"line_number":319,"context_line":"                      self.binary, self.topic)"},{"line_number":320,"context_line":"            if self.rpcserver_alt is not None:"},{"line_number":321,"context_line":"                try:"},{"line_number":322,"context_line":"                    LOG.debug(\u0027%s service is waiting to finish \u0027"},{"line_number":323,"context_line":"                              \u0027in-progress tasks...\u0027, self.binary)"},{"line_number":324,"context_line":"                    self.manager.graceful_shutdown()"},{"line_number":325,"context_line":"                except Exception as exc:"},{"line_number":326,"context_line":"                    LOG.exception(\u0027Service error occurred during manager \u0027"},{"line_number":327,"context_line":"                                  \u0027graceful shutdown, Error: %s\u0027, str(exc))"},{"line_number":328,"context_line":"                    pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"02577d64_af51524e","line":325,"range":{"start_line":320,"start_character":0,"end_line":325,"end_character":40},"in_reply_to":"afd1b766_138429aa","updated":"2026-02-05 20:30:11.000000000","message":"yeah, I realized it while testing it more and already fixed in my local changes. Good to see that we are simultanouisly thinking on same line :)","commit_id":"2a8eb1b5af173ff4d0edef8f816b21ab64d61969"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5c4439629960262d7091bb403d5beacb01cb21b5","unresolved":true,"context_lines":[{"line_number":323,"context_line":"                              \u0027in-progress tasks...\u0027, self.binary)"},{"line_number":324,"context_line":"                    self.manager.graceful_shutdown()"},{"line_number":325,"context_line":"                except Exception as exc:"},{"line_number":326,"context_line":"                    LOG.exception(\u0027Service error occurred during manager \u0027"},{"line_number":327,"context_line":"                                  \u0027graceful shutdown, Error: %s\u0027, str(exc))"},{"line_number":328,"context_line":"                    pass"},{"line_number":329,"context_line":"                LOG.debug(\u0027%s service stopping the 2nd RPC server on \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"0b1a9e2e_2ce7f497","line":326,"updated":"2026-02-05 13:27:57.000000000","message":"I think LOG.exception automatically log the exception that is in scope we don\u0027t need to include it in the message manually.","commit_id":"2a8eb1b5af173ff4d0edef8f816b21ab64d61969"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9eada1a16d162705cb1975b762180d3c1c3b8773","unresolved":false,"context_lines":[{"line_number":323,"context_line":"                              \u0027in-progress tasks...\u0027, self.binary)"},{"line_number":324,"context_line":"                    self.manager.graceful_shutdown()"},{"line_number":325,"context_line":"                except Exception as exc:"},{"line_number":326,"context_line":"                    LOG.exception(\u0027Service error occurred during manager \u0027"},{"line_number":327,"context_line":"                                  \u0027graceful shutdown, Error: %s\u0027, str(exc))"},{"line_number":328,"context_line":"                    pass"},{"line_number":329,"context_line":"                LOG.debug(\u0027%s service stopping the 2nd RPC server on \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"ecd1ade2_a39711af","line":326,"in_reply_to":"0b1a9e2e_2ce7f497","updated":"2026-02-05 20:30:11.000000000","message":"yeah.","commit_id":"2a8eb1b5af173ff4d0edef8f816b21ab64d61969"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5c4439629960262d7091bb403d5beacb01cb21b5","unresolved":true,"context_lines":[{"line_number":325,"context_line":"                except Exception as exc:"},{"line_number":326,"context_line":"                    LOG.exception(\u0027Service error occurred during manager \u0027"},{"line_number":327,"context_line":"                                  \u0027graceful shutdown, Error: %s\u0027, str(exc))"},{"line_number":328,"context_line":"                    pass"},{"line_number":329,"context_line":"                LOG.debug(\u0027%s service stopping the 2nd RPC server on \u0027"},{"line_number":330,"context_line":"                          \u0027topic: %s\u0027, self.binary, self.topic_alt)"},{"line_number":331,"context_line":"                self.rpcserver_alt.stop()"}],"source_content_type":"text/x-python","patch_set":2,"id":"a233ea33_921f229f","line":328,"updated":"2026-02-05 13:27:57.000000000","message":"pass is not needed here as we have the LOG statement","commit_id":"2a8eb1b5af173ff4d0edef8f816b21ab64d61969"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9eada1a16d162705cb1975b762180d3c1c3b8773","unresolved":false,"context_lines":[{"line_number":325,"context_line":"                except Exception as exc:"},{"line_number":326,"context_line":"                    LOG.exception(\u0027Service error occurred during manager \u0027"},{"line_number":327,"context_line":"                                  \u0027graceful shutdown, Error: %s\u0027, str(exc))"},{"line_number":328,"context_line":"                    pass"},{"line_number":329,"context_line":"                LOG.debug(\u0027%s service stopping the 2nd RPC server on \u0027"},{"line_number":330,"context_line":"                          \u0027topic: %s\u0027, self.binary, self.topic_alt)"},{"line_number":331,"context_line":"                self.rpcserver_alt.stop()"}],"source_content_type":"text/x-python","patch_set":2,"id":"05516813_52d8022b","line":328,"in_reply_to":"a233ea33_921f229f","updated":"2026-02-05 20:30:11.000000000","message":"Done","commit_id":"2a8eb1b5af173ff4d0edef8f816b21ab64d61969"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"98272f1d987f2189d12afb9695784d603a352727","unresolved":true,"context_lines":[{"line_number":308,"context_line":"        except exception.NotFound:"},{"line_number":309,"context_line":"            LOG.warning(\u0027Service killed that has no database entry\u0027)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def _shutdown_rpc_server(self, rpc_server, topic, name\u003d\"\"):"},{"line_number":312,"context_line":"        try:"},{"line_number":313,"context_line":"            LOG.debug(\u0027%s service stopping %s RPC server on topic: %s\u0027,"},{"line_number":314,"context_line":"                      self.binary, name, topic)"}],"source_content_type":"text/x-python","patch_set":6,"id":"a3ff3f9f_28128b53","line":311,"updated":"2026-02-18 13:18:04.000000000","message":"nit: It feels like topic already uniquely identify the RPC servers here so we don\u0027t need the name param.","commit_id":"1d2215bc67686a49b81be43fa5c71a874215ec95"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"553172e5efeef42f24ce59abf570602c040204b7","unresolved":false,"context_lines":[{"line_number":308,"context_line":"        except exception.NotFound:"},{"line_number":309,"context_line":"            LOG.warning(\u0027Service killed that has no database entry\u0027)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def _shutdown_rpc_server(self, rpc_server, topic, name\u003d\"\"):"},{"line_number":312,"context_line":"        try:"},{"line_number":313,"context_line":"            LOG.debug(\u0027%s service stopping %s RPC server on topic: %s\u0027,"},{"line_number":314,"context_line":"                      self.binary, name, topic)"}],"source_content_type":"text/x-python","patch_set":6,"id":"0c1bc5f0_8ff47d9a","line":311,"in_reply_to":"a3ff3f9f_28128b53","updated":"2026-02-18 20:05:24.000000000","message":"make sense. done","commit_id":"1d2215bc67686a49b81be43fa5c71a874215ec95"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"98272f1d987f2189d12afb9695784d603a352727","unresolved":true,"context_lines":[{"line_number":324,"context_line":"        \"\"\"stop the service and clean up.\"\"\""},{"line_number":325,"context_line":"        LOG.debug(\u0027%s service graceful shutdown started.\u0027, self.binary)"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        # This RPC server handle new requestsDuring graceful shutdown, this"},{"line_number":328,"context_line":"        # server will be stopped first, so that no new request are accepted"},{"line_number":329,"context_line":"        # by the manager."},{"line_number":330,"context_line":"        self._shutdown_rpc_server(self.rpcserver, self.topic)"},{"line_number":331,"context_line":"        try:"},{"line_number":332,"context_line":"            LOG.debug(\u0027%s manager graceful shutdown started.\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"4fdd54d6_891fe4be","line":329,"range":{"start_line":327,"start_character":0,"end_line":329,"end_character":25},"updated":"2026-02-18 13:18:04.000000000","message":"This is unclear. I guess you wanted to say something along the line:\nThis RPC server handles new requests during normal operation. During graceful shutdown we limit the RPC requests the service can handle. So we stop the main RPC server here and let the the alternative server handle the remaining requests for the ongoing operations.","commit_id":"1d2215bc67686a49b81be43fa5c71a874215ec95"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"553172e5efeef42f24ce59abf570602c040204b7","unresolved":false,"context_lines":[{"line_number":324,"context_line":"        \"\"\"stop the service and clean up.\"\"\""},{"line_number":325,"context_line":"        LOG.debug(\u0027%s service graceful shutdown started.\u0027, self.binary)"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        # This RPC server handle new requestsDuring graceful shutdown, this"},{"line_number":328,"context_line":"        # server will be stopped first, so that no new request are accepted"},{"line_number":329,"context_line":"        # by the manager."},{"line_number":330,"context_line":"        self._shutdown_rpc_server(self.rpcserver, self.topic)"},{"line_number":331,"context_line":"        try:"},{"line_number":332,"context_line":"            LOG.debug(\u0027%s manager graceful shutdown started.\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"4be0e781_fc6b19bb","line":329,"range":{"start_line":327,"start_character":0,"end_line":329,"end_character":25},"in_reply_to":"4fdd54d6_891fe4be","updated":"2026-02-18 20:05:24.000000000","message":"yeah, my bad on punctuation. done","commit_id":"1d2215bc67686a49b81be43fa5c71a874215ec95"}],"nova/tests/fixtures/conf.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"98272f1d987f2189d12afb9695784d603a352727","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        # Disable graceful shutdown wait otherwise the service stop() will"},{"line_number":64,"context_line":"        # take time and may end up with tests timeout."},{"line_number":65,"context_line":"        self.conf.set_default(\u0027manager_shutdown_timeout\u0027, 0)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        # oslo.limit requires endpoint_id since 2.3.0"},{"line_number":68,"context_line":"        self.conf.set_default(\u0027endpoint_id\u0027, \u0027ENDPOINT_ID\u0027, group\u003d\u0027oslo_limit\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"cf255e7c_c4abf8ed","line":65,"updated":"2026-02-18 13:18:04.000000000","message":"++","commit_id":"1d2215bc67686a49b81be43fa5c71a874215ec95"}],"nova/tests/unit/conf/test_base.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"467fae43f309ee0875e159ac2debecef29ad1a00","unresolved":true,"context_lines":[{"line_number":29,"context_line":"            base.NOVA_DEFAULT_GRACEFUL_SHUTDOWN_TIMEOUT,"},{"line_number":30,"context_line":"            CONF.graceful_shutdown_timeout)"},{"line_number":31,"context_line":"        location \u003d CONF.get_location(\u0027graceful_shutdown_timeout\u0027).location"},{"line_number":32,"context_line":"        self.assertEqual(cfg.Locations.set_default, location)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ca670967_c374037b","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":61},"updated":"2026-02-19 19:33:25.000000000","message":"test failing in cover job showed that this can be flasky also. Because config fixture use oslo.config\u0027s set_override() which set the lcoation to \u00273\u0027 and graceful_shutdown_timeout is overriden by mant other tests. If those tests run in parallel to this test then this check can fail (like this is failing in tox cover job).\n\nTraceback (most recent call last):\n  File \"/home/zuul/src/opendev.org/openstack/nova/nova/tests/unit/conf/test_base.py\", line 32, in test_graceful_shutdown_timeout_default\n    self.assertEqual(cfg.Locations.set_default, location)\n  File \"/home/zuul/src/opendev.org/openstack/nova/.tox/cover/lib/python3.12/site-packages/testtools/testcase.py\", line 419, in assertEqual\n    self.assertThat(observed, matcher, message)\n  File \"/home/zuul/src/opendev.org/openstack/nova/.tox/cover/lib/python3.12/site-packages/testtools/testcase.py\", line 509, in assertThat\n    raise mismatch_error\ntesttools.matchers._impl.MismatchError: !\u003d:\nreference \u003d \u003cLocations.set_default: (2, False)\u003e\nactual    \u003d \u003cLocations.set_override: (3, False)\u003e\n\n- https://storage.gra.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_c51/openstack/c511779b86cf4938918223d15aa1a75e/testr_results.html","commit_id":"2095bb2e29802b6b3c67b8cfddaf99f17a49502c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"eea9b34a58c0eb957d21f4f044fa34576546f765","unresolved":false,"context_lines":[{"line_number":29,"context_line":"            base.NOVA_DEFAULT_GRACEFUL_SHUTDOWN_TIMEOUT,"},{"line_number":30,"context_line":"            CONF.graceful_shutdown_timeout)"},{"line_number":31,"context_line":"        location \u003d CONF.get_location(\u0027graceful_shutdown_timeout\u0027).location"},{"line_number":32,"context_line":"        self.assertEqual(cfg.Locations.set_default, location)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7cf26023_ac5e1df9","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":61},"in_reply_to":"ca670967_c374037b","updated":"2026-02-19 19:50:10.000000000","message":"Done","commit_id":"2095bb2e29802b6b3c67b8cfddaf99f17a49502c"}],"requirements.txt":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"98272f1d987f2189d12afb9695784d603a352727","unresolved":false,"context_lines":[{"line_number":43,"context_line":"oslo.policy\u003e\u003d4.5.0 # Apache-2.0"},{"line_number":44,"context_line":"oslo.privsep\u003e\u003d2.6.2 # Apache-2.0"},{"line_number":45,"context_line":"oslo.i18n\u003e\u003d5.1.0 # Apache-2.0"},{"line_number":46,"context_line":"oslo.service[threading]\u003e\u003d4.5.0 # Apache-2.0"},{"line_number":47,"context_line":"rfc3986\u003e\u003d1.2.0 # Apache-2.0"},{"line_number":48,"context_line":"oslo.middleware\u003e\u003d3.31.0 # Apache-2.0"},{"line_number":49,"context_line":"psutil\u003e\u003d3.2.2 # BSD"}],"source_content_type":"text/plain","patch_set":6,"id":"9e026b1c_cb077b29","line":46,"updated":"2026-02-18 13:18:04.000000000","message":"++","commit_id":"1d2215bc67686a49b81be43fa5c71a874215ec95"}]}
