)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"76457b3db65267027d759e7e090906fa07dae7aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"fc549f12_0f2e1c3f","updated":"2026-02-02 00:31:23.000000000","message":"overall lgtm, a few things to fix","commit_id":"3b73c6dd8194cfa5b2c9284e192ccf6b2e4f5636"}],"oslo_service/backend/_threading/service.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"76457b3db65267027d759e7e090906fa07dae7aa","unresolved":true,"context_lines":[{"line_number":79,"context_line":"        LOG.debug(\"Full set of CONF:\")"},{"line_number":80,"context_line":"        conf.log_opt_values(LOG, logging.DEBUG)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"def _load_service_manager_options(service_manager, conf):"},{"line_number":84,"context_line":"    service_manager._graceful_shutdown_timeout \u003d conf.graceful_shutdown_timeout"},{"line_number":85,"context_line":"    _log_options(conf)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def _load_service_options(service, conf):"}],"source_content_type":"text/x-python","patch_set":1,"id":"6b030210_5f440649","line":85,"range":{"start_line":82,"start_character":0,"end_line":85,"end_character":22},"updated":"2026-02-02 00:31:23.000000000","message":"we do not need to set internal variables here as we are passing the graceful_shutdown_timeout in ServiceManager object.\n\nAnd after we remove the internal variable setting, we are not loading anything inservice_manager so this method itself can be removed and options can be logged directly via _log_options","commit_id":"3b73c6dd8194cfa5b2c9284e192ccf6b2e4f5636"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9e139240d563cce43ba3be939c7eeb491377aefb","unresolved":true,"context_lines":[{"line_number":79,"context_line":"        LOG.debug(\"Full set of CONF:\")"},{"line_number":80,"context_line":"        conf.log_opt_values(LOG, logging.DEBUG)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"def _load_service_manager_options(service_manager, conf):"},{"line_number":84,"context_line":"    service_manager._graceful_shutdown_timeout \u003d conf.graceful_shutdown_timeout"},{"line_number":85,"context_line":"    _log_options(conf)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def _load_service_options(service, conf):"}],"source_content_type":"text/x-python","patch_set":1,"id":"d904c8d2_919b12d7","line":85,"range":{"start_line":82,"start_character":0,"end_line":85,"end_character":22},"in_reply_to":"680af265_51db5c85","updated":"2026-02-02 16:40:07.000000000","message":"in reload case, services also needs to bre started and ServiceManager should be restarted or so which should take the new values if changed.\n\nWe have not implemnted the reload service in threading mode yet so that is whole amount of work we need when we will implement it. We need to take care of all these in restart() method of service launchers.\n\nFor now, changing the internal private variable of cotyledon in oslo.service looks odd and it can break us anytime.\n\nMaybe you can add a TODO here that we need to reload the graceful_shutdown_timeout in ServiceManager when reload service is implemented.","commit_id":"3b73c6dd8194cfa5b2c9284e192ccf6b2e4f5636"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"5dbd0128f39ee7889ea36e59abe817a7ee575bc8","unresolved":true,"context_lines":[{"line_number":79,"context_line":"        LOG.debug(\"Full set of CONF:\")"},{"line_number":80,"context_line":"        conf.log_opt_values(LOG, logging.DEBUG)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"def _load_service_manager_options(service_manager, conf):"},{"line_number":84,"context_line":"    service_manager._graceful_shutdown_timeout \u003d conf.graceful_shutdown_timeout"},{"line_number":85,"context_line":"    _log_options(conf)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def _load_service_options(service, conf):"}],"source_content_type":"text/x-python","patch_set":1,"id":"680af265_51db5c85","line":85,"range":{"start_line":82,"start_character":0,"end_line":85,"end_character":22},"in_reply_to":"6b030210_5f440649","updated":"2026-02-02 05:18:01.000000000","message":"It\u0027s true that we don\u0027t need this during startup, but this is still required to apply the new graceful_shutdown_timeout value detected after config reload.","commit_id":"3b73c6dd8194cfa5b2c9284e192ccf6b2e4f5636"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"49b48ffe8ea0d6be47ff7a6eb2bfaca327ced3fd","unresolved":true,"context_lines":[{"line_number":79,"context_line":"        LOG.debug(\"Full set of CONF:\")"},{"line_number":80,"context_line":"        conf.log_opt_values(LOG, logging.DEBUG)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"def _load_service_manager_options(service_manager, conf):"},{"line_number":84,"context_line":"    service_manager._graceful_shutdown_timeout \u003d conf.graceful_shutdown_timeout"},{"line_number":85,"context_line":"    _log_options(conf)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def _load_service_options(service, conf):"}],"source_content_type":"text/x-python","patch_set":1,"id":"c4cde509_bf26275f","line":85,"range":{"start_line":82,"start_character":0,"end_line":85,"end_character":22},"in_reply_to":"97537fcb_8d8f9f71","updated":"2026-02-02 18:32:01.000000000","message":"I am not saying for cotyledon case only. no_fork\u003dTrue is also a way to launch the service where cotyledon does not come into pic so we should not tie everything with cotyledon and need to work for no_fork case also.\n\nAnyways, setting a 3rd party private variable does not seems to be right thing and I will say oslo_config_glue is much better hack than setting cotyledon private variable which can break oslo.service anytime.\n\nIf you think we need to reset _graceful_shutdown_timeout in ServiceWrapper then ServiceWrapper should provide a public method to reset it.","commit_id":"3b73c6dd8194cfa5b2c9284e192ccf6b2e4f5636"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"c8b5ffda8546e9268e9888c4999a05658400d517","unresolved":true,"context_lines":[{"line_number":79,"context_line":"        LOG.debug(\"Full set of CONF:\")"},{"line_number":80,"context_line":"        conf.log_opt_values(LOG, logging.DEBUG)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"def _load_service_manager_options(service_manager, conf):"},{"line_number":84,"context_line":"    service_manager._graceful_shutdown_timeout \u003d conf.graceful_shutdown_timeout"},{"line_number":85,"context_line":"    _log_options(conf)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def _load_service_options(service, conf):"}],"source_content_type":"text/x-python","patch_set":1,"id":"85c78bfb_31dbbbad","line":85,"range":{"start_line":82,"start_character":0,"end_line":85,"end_character":22},"in_reply_to":"b284742f_617d7cf7","updated":"2026-02-04 09:31:43.000000000","message":"The cotyledon patch LGTM, I agree with Ghanshyam concerning the fact to have a public method to reset it, it seems a cleaner approach. Let\u0027s wait for feedback from Mehdi.","commit_id":"3b73c6dd8194cfa5b2c9284e192ccf6b2e4f5636"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"791c84a396817b62d181cf55eb826d58d826d38f","unresolved":true,"context_lines":[{"line_number":79,"context_line":"        LOG.debug(\"Full set of CONF:\")"},{"line_number":80,"context_line":"        conf.log_opt_values(LOG, logging.DEBUG)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"def _load_service_manager_options(service_manager, conf):"},{"line_number":84,"context_line":"    service_manager._graceful_shutdown_timeout \u003d conf.graceful_shutdown_timeout"},{"line_number":85,"context_line":"    _log_options(conf)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def _load_service_options(service, conf):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ef10b212_bf9dd138","line":85,"range":{"start_line":82,"start_character":0,"end_line":85,"end_character":22},"in_reply_to":"c4cde509_bf26275f","updated":"2026-02-03 01:11:13.000000000","message":"\u003e no_fork\u003dTrue is also a way to launch the service where cotyledon does not come into pic so we should not tie everything with cotyledon and need to work for no_fork case also.\n\nBut this method is only used in the implementation in cotyledon, right ? If you use this method here then it uses cotyledon. Again I\u0027m unsure why we should avoid mentioning cotyledon in the method actually using it.\nCould you please point any existing patch which describes that problem ?\n\n\u003e Anyways, setting a 3rd party private variable does not seems to be right thing and I will say oslo_config_glue is much better hack than setting cotyledon private variable which can break oslo.service anytime.\n\nI agree it has tradeoff, but I don\u0027t think this is such much worse. I regard the options being registered by cotyledon as its private things, and we just replaced it by our own definition here).\n\n\u003e If you think we need to reset _graceful_shutdown_timeout in ServiceWrapper then ServiceWrapper should provide a public method to reset it.\n\n_graceful_shutdown_timeout is used in ServiceManager, not Service. I don\u0027t think we really want to override ServiceManager at this point just for this.","commit_id":"3b73c6dd8194cfa5b2c9284e192ccf6b2e4f5636"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"89e0155899a45289e43421f899147ab6c939ca7d","unresolved":true,"context_lines":[{"line_number":79,"context_line":"        LOG.debug(\"Full set of CONF:\")"},{"line_number":80,"context_line":"        conf.log_opt_values(LOG, logging.DEBUG)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"def _load_service_manager_options(service_manager, conf):"},{"line_number":84,"context_line":"    service_manager._graceful_shutdown_timeout \u003d conf.graceful_shutdown_timeout"},{"line_number":85,"context_line":"    _log_options(conf)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def _load_service_options(service, conf):"}],"source_content_type":"text/x-python","patch_set":1,"id":"97537fcb_8d8f9f71","line":85,"range":{"start_line":82,"start_character":0,"end_line":85,"end_character":22},"in_reply_to":"d904c8d2_919b12d7","updated":"2026-02-02 17:04:46.000000000","message":"\u003e In reload case, services also needs to bre started and ServiceManager should be restarted or so which should take the new values if changed.\n\nBase ServiceManager provides the generic mechanism to trigger reload for SIGHUP. \nBecause of no override of reload interface in ServiceWrapper, that results the whole Service being stopped and then started.\nThat is the base capability brought by cotyledon so reload is already \"implemented\", IIUC.","commit_id":"3b73c6dd8194cfa5b2c9284e192ccf6b2e4f5636"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"8233b6e254d2f9769d59fba8861e8d1660348c41","unresolved":true,"context_lines":[{"line_number":79,"context_line":"        LOG.debug(\"Full set of CONF:\")"},{"line_number":80,"context_line":"        conf.log_opt_values(LOG, logging.DEBUG)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"def _load_service_manager_options(service_manager, conf):"},{"line_number":84,"context_line":"    service_manager._graceful_shutdown_timeout \u003d conf.graceful_shutdown_timeout"},{"line_number":85,"context_line":"    _log_options(conf)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def _load_service_options(service, conf):"}],"source_content_type":"text/x-python","patch_set":1,"id":"b284742f_617d7cf7","line":85,"range":{"start_line":82,"start_character":0,"end_line":85,"end_character":22},"in_reply_to":"ef10b212_bf9dd138","updated":"2026-02-03 20:10:10.000000000","message":"\u003e \n\u003e \u003e If you think we need to reset _graceful_shutdown_timeout in ServiceWrapper then ServiceWrapper should provide a public method to reset it.\n\u003e \n\u003e _graceful_shutdown_timeout is used in ServiceManager, not Service. I don\u0027t think we really want to override ServiceManager at this point just for this.\n\nah my bad on typo, I meant ServiceManager. I mean to say instead of changing ServiceManager private variable _graceful_shutdown_timeout, ServiceManager should have some public method to reset it and that we can use here.\n\nI proposed the PR for new set method, let see if that is ok to add in cotyledon\n- https://github.com/sileht/cotyledon/pull/92","commit_id":"3b73c6dd8194cfa5b2c9284e192ccf6b2e4f5636"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"76457b3db65267027d759e7e090906fa07dae7aa","unresolved":true,"context_lines":[{"line_number":85,"context_line":"    _log_options(conf)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def _load_service_options(service, conf):"},{"line_number":89,"context_line":"    _log_options(conf)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"def _configfile_reload(conf, restart_method):"}],"source_content_type":"text/x-python","patch_set":1,"id":"11443883_6a512f58","line":89,"range":{"start_line":88,"start_character":0,"end_line":89,"end_character":22},"updated":"2026-02-02 00:31:23.000000000","message":"this is just wrapper of _log_options, we do not need this actually","commit_id":"3b73c6dd8194cfa5b2c9284e192ccf6b2e4f5636"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"5dbd0128f39ee7889ea36e59abe817a7ee575bc8","unresolved":true,"context_lines":[{"line_number":85,"context_line":"    _log_options(conf)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def _load_service_options(service, conf):"},{"line_number":89,"context_line":"    _log_options(conf)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"def _configfile_reload(conf, restart_method):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f59d266_201fa593","line":89,"range":{"start_line":88,"start_character":0,"end_line":89,"end_character":22},"in_reply_to":"11443883_6a512f58","updated":"2026-02-02 05:18:01.000000000","message":"I can remove this but kept it for consistency with cotyledon.","commit_id":"3b73c6dd8194cfa5b2c9284e192ccf6b2e4f5636"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"76457b3db65267027d759e7e090906fa07dae7aa","unresolved":true,"context_lines":[{"line_number":122,"context_line":"    manager \u003d cotyledon.ServiceManager("},{"line_number":123,"context_line":"        mp_context\u003dmanager_context,"},{"line_number":124,"context_line":"        graceful_shutdown_timeout\u003dconf.graceful_shutdown_timeout)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    # The logics below re-implements oslo_config_glue.link, so that we don\u0027t"},{"line_number":127,"context_line":"    # rely on options registerd by oslo_config_glue.register"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    _load_service_manager_options(manager, conf)"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"77a63d20_3b1fef43","line":127,"range":{"start_line":125,"start_character":0,"end_line":127,"end_character":60},"updated":"2026-02-02 00:31:23.000000000","message":"as we are removing the usage of oslo_config_glue, talking about oslo_config_glue here can be confusing.","commit_id":"3b73c6dd8194cfa5b2c9284e192ccf6b2e4f5636"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"49b48ffe8ea0d6be47ff7a6eb2bfaca327ced3fd","unresolved":true,"context_lines":[{"line_number":122,"context_line":"    manager \u003d cotyledon.ServiceManager("},{"line_number":123,"context_line":"        mp_context\u003dmanager_context,"},{"line_number":124,"context_line":"        graceful_shutdown_timeout\u003dconf.graceful_shutdown_timeout)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    # The logics below re-implements oslo_config_glue.link, so that we don\u0027t"},{"line_number":127,"context_line":"    # rely on options registerd by oslo_config_glue.register"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    _load_service_manager_options(manager, conf)"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ecab5288_cafa1b78","line":127,"range":{"start_line":125,"start_character":0,"end_line":127,"end_character":60},"in_reply_to":"34e3c7be_25ba9f65","updated":"2026-02-02 18:32:01.000000000","message":"I am fine with mentioning cotyledon but  oslo_config_glue.link is something we are replacing and it may be removed from cotyledon when not used in openstack.","commit_id":"3b73c6dd8194cfa5b2c9284e192ccf6b2e4f5636"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9e139240d563cce43ba3be939c7eeb491377aefb","unresolved":true,"context_lines":[{"line_number":122,"context_line":"    manager \u003d cotyledon.ServiceManager("},{"line_number":123,"context_line":"        mp_context\u003dmanager_context,"},{"line_number":124,"context_line":"        graceful_shutdown_timeout\u003dconf.graceful_shutdown_timeout)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    # The logics below re-implements oslo_config_glue.link, so that we don\u0027t"},{"line_number":127,"context_line":"    # rely on options registerd by oslo_config_glue.register"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    _load_service_manager_options(manager, conf)"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"6ea93fbc_2c4c2e38","line":127,"range":{"start_line":125,"start_character":0,"end_line":127,"end_character":60},"in_reply_to":"3ee390ea_6d0be419","updated":"2026-02-02 16:40:07.000000000","message":"therse reload are needed for non-cotyledon case also (no_fork\u003dTrue) so I will suggest to keep it generic and not tie it up with cotyledon. Maybe we can say, this is needed to reload the config as per the restart_method","commit_id":"3b73c6dd8194cfa5b2c9284e192ccf6b2e4f5636"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"89e0155899a45289e43421f899147ab6c939ca7d","unresolved":true,"context_lines":[{"line_number":122,"context_line":"    manager \u003d cotyledon.ServiceManager("},{"line_number":123,"context_line":"        mp_context\u003dmanager_context,"},{"line_number":124,"context_line":"        graceful_shutdown_timeout\u003dconf.graceful_shutdown_timeout)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    # The logics below re-implements oslo_config_glue.link, so that we don\u0027t"},{"line_number":127,"context_line":"    # rely on options registerd by oslo_config_glue.register"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    _load_service_manager_options(manager, conf)"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"34e3c7be_25ba9f65","line":127,"range":{"start_line":125,"start_character":0,"end_line":127,"end_character":60},"in_reply_to":"6ea93fbc_2c4c2e38","updated":"2026-02-02 17:04:46.000000000","message":"I still don\u0027t understand what is the main concern about mentioning cotyledon here? We do actually steal logic from cotyledon and leaving that context in the code should be helpful for future maintenance when anyone else needs to understand how these should be implemented in this way.\n\nAlso the logic is quite specific to cotyledon, because it uses ServiceManager and its register_hook functionality. I don\u0027t know how it can be generic for any non-cotyledon-base implementation.","commit_id":"3b73c6dd8194cfa5b2c9284e192ccf6b2e4f5636"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"5dbd0128f39ee7889ea36e59abe817a7ee575bc8","unresolved":true,"context_lines":[{"line_number":122,"context_line":"    manager \u003d cotyledon.ServiceManager("},{"line_number":123,"context_line":"        mp_context\u003dmanager_context,"},{"line_number":124,"context_line":"        graceful_shutdown_timeout\u003dconf.graceful_shutdown_timeout)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    # The logics below re-implements oslo_config_glue.link, so that we don\u0027t"},{"line_number":127,"context_line":"    # rely on options registerd by oslo_config_glue.register"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    _load_service_manager_options(manager, conf)"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3ee390ea_6d0be419","line":127,"range":{"start_line":125,"start_character":0,"end_line":127,"end_character":60},"in_reply_to":"77a63d20_3b1fef43","updated":"2026-02-02 05:18:01.000000000","message":"Maybe I should explicitly mention oslo_config_glue is from cotyledon ?\nIMO we should still leave some note to help users understand this is imported from cotyledon.","commit_id":"3b73c6dd8194cfa5b2c9284e192ccf6b2e4f5636"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"791c84a396817b62d181cf55eb826d58d826d38f","unresolved":true,"context_lines":[{"line_number":122,"context_line":"    manager \u003d cotyledon.ServiceManager("},{"line_number":123,"context_line":"        mp_context\u003dmanager_context,"},{"line_number":124,"context_line":"        graceful_shutdown_timeout\u003dconf.graceful_shutdown_timeout)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    # The logics below re-implements oslo_config_glue.link, so that we don\u0027t"},{"line_number":127,"context_line":"    # rely on options registerd by oslo_config_glue.register"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    _load_service_manager_options(manager, conf)"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"2b4b0049_83cb1430","line":127,"range":{"start_line":125,"start_character":0,"end_line":127,"end_character":60},"in_reply_to":"ecab5288_cafa1b78","updated":"2026-02-03 01:11:13.000000000","message":"I\u0027ve mentioned the explicit version. I believe this should address the concern about future removal.","commit_id":"3b73c6dd8194cfa5b2c9284e192ccf6b2e4f5636"}]}
