)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"a779a3becc714a93f0726386d7c44e7c155de45e","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: I86a34c22d41d87a9cce2d4ac6d95562d05823ecf"},{"line_number":22,"context_line":"Closes-Bug: #1715374"},{"line_number":23,"context_line":"Closes-Bug: #1794708"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5fc1f717_2d1157ad","line":23,"updated":"2019-03-08 22:13:56.000000000","message":"I don\u0027t think the patch closes this bug, because ProcessLauncher will still send SIGTERM to all children and then relaunch them (see I3e7264a1efcbf66a9afc69d8ed20f600c985c296).","commit_id":"6956f182e264c2e07beb856c61507fb4d0d1d814"}],"doc/source/user/usage.rst":[{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"3456b76e96339583901c3acca75807bc8f027aba","unresolved":false,"context_lines":[{"line_number":156,"context_line":"*NOTE:* SIGHUP is not supported on Windows."},{"line_number":157,"context_line":"*NOTE:* Config option graceful_shutdown_timeout is not supported on Windows."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Below is the example of a service with a reset method that allows reloading"},{"line_number":160,"context_line":"logging options by sending a SIGHUP."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":".. code-block:: python"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_98d84c7f","line":159,"updated":"2019-08-20 20:58:59.000000000","message":"I _think_ this example is valid in either case, but if anyone knows otherwise please let me know.","commit_id":"7021cff0084066fa2bad4def9a6a9e75bcd2ebf0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a1230bc5c07e7d4c7122a25bf17b06b40fa842e6","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"To force instantaneous termination SIGINT signal must be sent."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"The behavior on receiving SIGHUP varies based on how the service is configured."},{"line_number":147,"context_line":"If the launcher uses the ``reload`` restart_method (the default), then the"},{"line_number":148,"context_line":"service will reload its configuration and any threads will be completely"},{"line_number":149,"context_line":"restarted. If the ``mutate`` restart_method is used, then only the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_e7602310","line":146,"range":{"start_line":146,"start_character":26,"end_line":146,"end_character":32},"updated":"2019-08-29 14:59:04.000000000","message":"nit: Totally unrelated, but I think these should be ``SIGHUP``. It\u0027s \"wrong\" everywhere else though so...","commit_id":"696e82706d96ccdf94a0458c96c659ff2d8244f5"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"54942d3c0a336993d79e03199dca912d45b29d26","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"To force instantaneous termination SIGINT signal must be sent."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"The behavior on receiving SIGHUP varies based on how the service is configured."},{"line_number":147,"context_line":"If the launcher uses the ``reload`` restart_method (the default), then the"},{"line_number":148,"context_line":"service will reload its configuration and any threads will be completely"},{"line_number":149,"context_line":"restarted. If the ``mutate`` restart_method is used, then only the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_19303fe9","line":146,"range":{"start_line":146,"start_character":26,"end_line":146,"end_character":32},"in_reply_to":"7faddb67_e7602310","updated":"2019-08-29 20:30:05.000000000","message":"Done (with bonuses) in https://review.opendev.org/679334","commit_id":"696e82706d96ccdf94a0458c96c659ff2d8244f5"}],"oslo_service/service.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b60b6811ca3ed3841d7289b2b894df2812b08f11","unresolved":false,"context_lines":[{"line_number":392,"context_line":"        while True:"},{"line_number":393,"context_line":"            self.handle_signal()"},{"line_number":394,"context_line":"            status, signo \u003d self._wait_for_exit_or_signal()"},{"line_number":395,"context_line":"            if not _is_sighup_and_daemon(signo):"},{"line_number":396,"context_line":"                break"},{"line_number":397,"context_line":"            self.restart()"},{"line_number":398,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_dd316ea4","line":395,"updated":"2019-03-08 14:49:04.000000000","message":"If this passes, which can happen if we\u0027re self-daemonized, then we will break here and not call self.restart(). Our self.restart() is Launcher.restart(), which is where we reload config files, which is an important part of it, and what calls Services.restart(), which you\u0027re changing. So...don\u0027t we at least need a fix to this test as well?\n\nOr are you asserting that the test for daemonness is actually working, we just assume that it\u0027s not because it\u0027s doing an actual restart?","commit_id":"6956f182e264c2e07beb856c61507fb4d0d1d814"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"646afe50799d68d08b8853301e6acd422fc7dd83","unresolved":false,"context_lines":[{"line_number":392,"context_line":"        while True:"},{"line_number":393,"context_line":"            self.handle_signal()"},{"line_number":394,"context_line":"            status, signo \u003d self._wait_for_exit_or_signal()"},{"line_number":395,"context_line":"            if not _is_sighup_and_daemon(signo):"},{"line_number":396,"context_line":"                break"},{"line_number":397,"context_line":"            self.restart()"},{"line_number":398,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_b3d37338","line":395,"in_reply_to":"5fc1f717_98ea14aa","updated":"2019-03-08 16:20:05.000000000","message":"Aight, well I still think that the test for is-a-daemon is wrong, but if it\u0027s not affecting us in this specific case, I don\u0027t care enough to pursue a change. So, if this is acceptable to the osloians, sounds good to me.","commit_id":"6956f182e264c2e07beb856c61507fb4d0d1d814"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"4072eeba087bab5ec8c0fb3680baa0c8efe29814","unresolved":false,"context_lines":[{"line_number":392,"context_line":"        while True:"},{"line_number":393,"context_line":"            self.handle_signal()"},{"line_number":394,"context_line":"            status, signo \u003d self._wait_for_exit_or_signal()"},{"line_number":395,"context_line":"            if not _is_sighup_and_daemon(signo):"},{"line_number":396,"context_line":"                break"},{"line_number":397,"context_line":"            self.restart()"},{"line_number":398,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_dda40ebc","line":395,"in_reply_to":"5fc1f717_dd316ea4","updated":"2019-03-08 14:50:56.000000000","message":"\u003e Or are you asserting that the test for daemonness is actually working, we just assume that it\u0027s not because it\u0027s doing an actual restart?\n\nThat\u0027s my understanding of what mnaser is saying.","commit_id":"6956f182e264c2e07beb856c61507fb4d0d1d814"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"7ac16a4eb668ca98f4e0eaaa0d1618e7cd512f09","unresolved":false,"context_lines":[{"line_number":392,"context_line":"        while True:"},{"line_number":393,"context_line":"            self.handle_signal()"},{"line_number":394,"context_line":"            status, signo \u003d self._wait_for_exit_or_signal()"},{"line_number":395,"context_line":"            if not _is_sighup_and_daemon(signo):"},{"line_number":396,"context_line":"                break"},{"line_number":397,"context_line":"            self.restart()"},{"line_number":398,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_98ea14aa","line":395,"in_reply_to":"5fc1f717_dda40ebc","updated":"2019-03-08 15:34:38.000000000","message":"I am indeed asserting that the actual test for daemonness working (I grabbed a running version of nova inside systemd, edited to add a LOG and it detected it correctly).\n\nIt\u0027s the problem of doing an actual restart","commit_id":"6956f182e264c2e07beb856c61507fb4d0d1d814"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"a779a3becc714a93f0726386d7c44e7c155de45e","unresolved":false,"context_lines":[{"line_number":677,"context_line":"                    service.reset()"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"                for pid in self.children:"},{"line_number":680,"context_line":"                    os.kill(pid, signal.SIGTERM)"},{"line_number":681,"context_line":""},{"line_number":682,"context_line":"                self.running \u003d True"},{"line_number":683,"context_line":"                self.sigcaught \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_e80d7d35","line":680,"updated":"2019-03-08 22:13:56.000000000","message":"I think we need to change this back to SIGHUP to make it consistent.","commit_id":"6956f182e264c2e07beb856c61507fb4d0d1d814"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"4072eeba087bab5ec8c0fb3680baa0c8efe29814","unresolved":false,"context_lines":[{"line_number":776,"context_line":"        self.tg.wait()"},{"line_number":777,"context_line":""},{"line_number":778,"context_line":"    def restart(self):"},{"line_number":779,"context_line":"        \"\"\"Reset services and start them in new threads.\"\"\""},{"line_number":780,"context_line":"        for restart_service in self.services:"},{"line_number":781,"context_line":"            restart_service.reset()"},{"line_number":782,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_ddd5ee44","line":779,"updated":"2019-03-08 14:50:56.000000000","message":"This is no longer accurate, is it?","commit_id":"6956f182e264c2e07beb856c61507fb4d0d1d814"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"7ac16a4eb668ca98f4e0eaaa0d1618e7cd512f09","unresolved":false,"context_lines":[{"line_number":776,"context_line":"        self.tg.wait()"},{"line_number":777,"context_line":""},{"line_number":778,"context_line":"    def restart(self):"},{"line_number":779,"context_line":"        \"\"\"Reset services and start them in new threads.\"\"\""},{"line_number":780,"context_line":"        for restart_service in self.services:"},{"line_number":781,"context_line":"            restart_service.reset()"},{"line_number":782,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_18ef04b1","line":779,"in_reply_to":"5fc1f717_ddd5ee44","updated":"2019-03-08 15:34:38.000000000","message":"Indeed.  I can update this if the rest of the change seems to make sense.","commit_id":"6956f182e264c2e07beb856c61507fb4d0d1d814"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4c847f28f297a5e11981cf62332c4dbc936fb247","unresolved":false,"context_lines":[{"line_number":261,"context_line":"        \"\"\""},{"line_number":262,"context_line":"        self.conf \u003d conf"},{"line_number":263,"context_line":"        conf.register_opts(_options.service_opts)"},{"line_number":264,"context_line":"        self.services \u003d Services()"},{"line_number":265,"context_line":"        self.backdoor_port \u003d ("},{"line_number":266,"context_line":"            eventlet_backdoor.initialize_if_enabled(self.conf))"},{"line_number":267,"context_line":"        self.restart_method \u003d restart_method"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_9e4135ac","line":264,"range":{"start_line":264,"start_character":32,"end_line":264,"end_character":34},"updated":"2019-07-16 21:33:10.000000000","message":"When I pass restart_method in here...","commit_id":"68d8138bdf5834b8d64bd288bcb9c34330dbcc87"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4c847f28f297a5e11981cf62332c4dbc936fb247","unresolved":false,"context_lines":[{"line_number":745,"context_line":""},{"line_number":746,"context_line":"class Services(object):"},{"line_number":747,"context_line":""},{"line_number":748,"context_line":"    def __init__(self):"},{"line_number":749,"context_line":"        self.services \u003d []"},{"line_number":750,"context_line":"        self.tg \u003d threadgroup.ThreadGroup()"},{"line_number":751,"context_line":"        self.done \u003d event.Event()"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_9e2a95d8","line":748,"range":{"start_line":748,"start_character":16,"end_line":748,"end_character":22},"updated":"2019-07-16 21:33:10.000000000","message":"...and add it here and save it in self.restart_method...\n\nthe service no longer dies with the exception.\n\nI\u0027m still trying to decipher whether it\u0027s doing what we want it to do though.\n\nAnd of course I have no idea if it\u0027s okay to change this constructor\u0027s signature, etc.","commit_id":"68d8138bdf5834b8d64bd288bcb9c34330dbcc87"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c93cc618107ddb9cdc4a48addb5cca0c27580c88","unresolved":false,"context_lines":[{"line_number":261,"context_line":"        \"\"\""},{"line_number":262,"context_line":"        self.conf \u003d conf"},{"line_number":263,"context_line":"        conf.register_opts(_options.service_opts)"},{"line_number":264,"context_line":"        self.services \u003d Services(restart_method)"},{"line_number":265,"context_line":"        self.backdoor_port \u003d ("},{"line_number":266,"context_line":"            eventlet_backdoor.initialize_if_enabled(self.conf))"},{"line_number":267,"context_line":"        self.restart_method \u003d restart_method"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_6ad23dd3","line":264,"range":{"start_line":264,"start_character":33,"end_line":264,"end_character":47},"updated":"2019-07-19 18:22:42.000000000","message":"nit: prefer naming kwargs","commit_id":"c802b3a3c70a31d8439a6e357662ed31196d55c1"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"51e561a3150cac44266ead48de888ce27a6632bf","unresolved":false,"context_lines":[{"line_number":261,"context_line":"        \"\"\""},{"line_number":262,"context_line":"        self.conf \u003d conf"},{"line_number":263,"context_line":"        conf.register_opts(_options.service_opts)"},{"line_number":264,"context_line":"        self.services \u003d Services(restart_method)"},{"line_number":265,"context_line":"        self.backdoor_port \u003d ("},{"line_number":266,"context_line":"            eventlet_backdoor.initialize_if_enabled(self.conf))"},{"line_number":267,"context_line":"        self.restart_method \u003d restart_method"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_1d8e8e2d","line":264,"range":{"start_line":264,"start_character":33,"end_line":264,"end_character":47},"in_reply_to":"7faddb67_6ad23dd3","updated":"2019-08-20 20:57:25.000000000","message":"Done","commit_id":"c802b3a3c70a31d8439a6e357662ed31196d55c1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c93cc618107ddb9cdc4a48addb5cca0c27580c88","unresolved":false,"context_lines":[{"line_number":372,"context_line":"            super(ServiceLauncher, self).wait()"},{"line_number":373,"context_line":"        except SignalExit as exc:"},{"line_number":374,"context_line":"            signame \u003d self.signal_handler.signals_to_name[exc.signo]"},{"line_number":375,"context_line":"            LOG.info(\u0027Caught %s, exiting\u0027, signame)"},{"line_number":376,"context_line":"            status \u003d exc.code"},{"line_number":377,"context_line":"            signo \u003d exc.signo"},{"line_number":378,"context_line":"        except SystemExit as exc:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_2a2205ba","line":375,"range":{"start_line":375,"start_character":33,"end_line":375,"end_character":40},"updated":"2019-07-19 18:22:42.000000000","message":"nit: \"exiting\" is a bit misleading if we\u0027re not exiting. This shows up in the logs before \u0026 after the change:\n\n INFO oslo_service.service [None req-24888103-19a7-4c8d-ab04-1d3454ac57f4 None None] Caught SIGHUP, exiting","commit_id":"c802b3a3c70a31d8439a6e357662ed31196d55c1"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"51e561a3150cac44266ead48de888ce27a6632bf","unresolved":false,"context_lines":[{"line_number":372,"context_line":"            super(ServiceLauncher, self).wait()"},{"line_number":373,"context_line":"        except SignalExit as exc:"},{"line_number":374,"context_line":"            signame \u003d self.signal_handler.signals_to_name[exc.signo]"},{"line_number":375,"context_line":"            LOG.info(\u0027Caught %s, exiting\u0027, signame)"},{"line_number":376,"context_line":"            status \u003d exc.code"},{"line_number":377,"context_line":"            signo \u003d exc.signo"},{"line_number":378,"context_line":"        except SystemExit as exc:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_7da3029f","line":375,"range":{"start_line":375,"start_character":33,"end_line":375,"end_character":40},"in_reply_to":"7faddb67_2a2205ba","updated":"2019-08-20 20:57:25.000000000","message":"Agreed. I\u0027ll change this to just \"handling\" since the behavior is dependent on things outside this function.","commit_id":"c802b3a3c70a31d8439a6e357662ed31196d55c1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c93cc618107ddb9cdc4a48addb5cca0c27580c88","unresolved":false,"context_lines":[{"line_number":518,"context_line":"            launcher.wait()"},{"line_number":519,"context_line":"        except SignalExit as exc:"},{"line_number":520,"context_line":"            signame \u003d self.signal_handler.signals_to_name[exc.signo]"},{"line_number":521,"context_line":"            LOG.info(\u0027Child caught %s, exiting\u0027, signame)"},{"line_number":522,"context_line":"            status \u003d exc.code"},{"line_number":523,"context_line":"            signo \u003d exc.signo"},{"line_number":524,"context_line":"        except SystemExit as exc:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_0a106956","line":521,"range":{"start_line":521,"start_character":39,"end_line":521,"end_character":46},"updated":"2019-07-19 18:22:42.000000000","message":"maybe here too, though this one isn\u0027t showing up in my logs","commit_id":"c802b3a3c70a31d8439a6e357662ed31196d55c1"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"51e561a3150cac44266ead48de888ce27a6632bf","unresolved":false,"context_lines":[{"line_number":518,"context_line":"            launcher.wait()"},{"line_number":519,"context_line":"        except SignalExit as exc:"},{"line_number":520,"context_line":"            signame \u003d self.signal_handler.signals_to_name[exc.signo]"},{"line_number":521,"context_line":"            LOG.info(\u0027Child caught %s, exiting\u0027, signame)"},{"line_number":522,"context_line":"            status \u003d exc.code"},{"line_number":523,"context_line":"            signo \u003d exc.signo"},{"line_number":524,"context_line":"        except SystemExit as exc:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_1dbc4eb9","line":521,"range":{"start_line":521,"start_character":39,"end_line":521,"end_character":46},"in_reply_to":"7faddb67_0a106956","updated":"2019-08-20 20:57:25.000000000","message":"The same logic seems to apply, so I\u0027ll change this one as well.","commit_id":"c802b3a3c70a31d8439a6e357662ed31196d55c1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a1230bc5c07e7d4c7122a25bf17b06b40fa842e6","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        self.backdoor_port \u003d ("},{"line_number":266,"context_line":"            eventlet_backdoor.initialize_if_enabled(self.conf))"},{"line_number":267,"context_line":"        self.restart_method \u003d restart_method"},{"line_number":268,"context_line":"        if restart_method not in _LAUNCHER_RESTART_METHODS:"},{"line_number":269,"context_line":"            raise ValueError(_(\"Invalid restart_method: %s\") % restart_method)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def launch_service(self, service, workers\u003d1):"},{"line_number":272,"context_line":"        \"\"\"Load and start the given service."}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_5d10ea4f","line":269,"range":{"start_line":268,"start_character":0,"end_line":269,"end_character":78},"updated":"2019-08-29 14:59:04.000000000","message":"You need to do this before initializing \u0027self.services\u0027 now (probably first in the function, tbh)\n\nLater: Actually, we\u0027re explicitly checking for one of the two options and simply sending SIGTERM if not set so _technically_ we don\u0027t need this. I think it would be good thing to do though","commit_id":"696e82706d96ccdf94a0458c96c659ff2d8244f5"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"54942d3c0a336993d79e03199dca912d45b29d26","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        self.backdoor_port \u003d ("},{"line_number":266,"context_line":"            eventlet_backdoor.initialize_if_enabled(self.conf))"},{"line_number":267,"context_line":"        self.restart_method \u003d restart_method"},{"line_number":268,"context_line":"        if restart_method not in _LAUNCHER_RESTART_METHODS:"},{"line_number":269,"context_line":"            raise ValueError(_(\"Invalid restart_method: %s\") % restart_method)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def launch_service(self, service, workers\u003d1):"},{"line_number":272,"context_line":"        \"\"\"Load and start the given service."}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_0cf1de95","line":269,"range":{"start_line":268,"start_character":0,"end_line":269,"end_character":78},"in_reply_to":"7faddb67_5d10ea4f","updated":"2019-08-29 20:30:05.000000000","message":"Having added the same check to Services.__init__ as suggested, I don\u0027t need it here anyway, because it\u0027ll trigger at L264.","commit_id":"696e82706d96ccdf94a0458c96c659ff2d8244f5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a1230bc5c07e7d4c7122a25bf17b06b40fa842e6","unresolved":false,"context_lines":[{"line_number":671,"context_line":"                child_signal \u003d signal.SIGTERM"},{"line_number":672,"context_line":"                if self.restart_method \u003d\u003d \u0027reload\u0027:"},{"line_number":673,"context_line":"                    self.conf.reload_config_files()"},{"line_number":674,"context_line":"                elif self.restart_method \u003d\u003d \u0027mutate\u0027:"},{"line_number":675,"context_line":"                    self.conf.mutate_config_files()"},{"line_number":676,"context_line":"                    child_signal \u003d signal.SIGHUP"},{"line_number":677,"context_line":"                for service in set("}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_9d1f425a","line":674,"range":{"start_line":674,"start_character":0,"end_line":674,"end_character":53},"updated":"2019-08-29 14:59:04.000000000","message":"This isn\u0027t at all your responsibility, but could you change this to clarify that there are only two potential options here. Something as simple as\n\n    else:  # self.restart_method \u003d\u003d \u0027mutate\u0027\n\nought to do the trick","commit_id":"696e82706d96ccdf94a0458c96c659ff2d8244f5"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"54942d3c0a336993d79e03199dca912d45b29d26","unresolved":false,"context_lines":[{"line_number":671,"context_line":"                child_signal \u003d signal.SIGTERM"},{"line_number":672,"context_line":"                if self.restart_method \u003d\u003d \u0027reload\u0027:"},{"line_number":673,"context_line":"                    self.conf.reload_config_files()"},{"line_number":674,"context_line":"                elif self.restart_method \u003d\u003d \u0027mutate\u0027:"},{"line_number":675,"context_line":"                    self.conf.mutate_config_files()"},{"line_number":676,"context_line":"                    child_signal \u003d signal.SIGHUP"},{"line_number":677,"context_line":"                for service in set("}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_8cfdce6f","line":674,"range":{"start_line":674,"start_character":0,"end_line":674,"end_character":53},"in_reply_to":"7faddb67_9d1f425a","updated":"2019-08-29 20:30:05.000000000","message":"Done","commit_id":"696e82706d96ccdf94a0458c96c659ff2d8244f5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a1230bc5c07e7d4c7122a25bf17b06b40fa842e6","unresolved":false,"context_lines":[{"line_number":749,"context_line":"        self.services \u003d []"},{"line_number":750,"context_line":"        self.tg \u003d threadgroup.ThreadGroup()"},{"line_number":751,"context_line":"        self.done \u003d event.Event()"},{"line_number":752,"context_line":"        self.restart_method \u003d restart_method"},{"line_number":753,"context_line":""},{"line_number":754,"context_line":"    def add(self, service):"},{"line_number":755,"context_line":"        \"\"\"Add a service to a list and create a thread to run it."}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_fd4d1671","line":752,"updated":"2019-08-29 14:59:04.000000000","message":"Will people initialize this from other libraries? If so, we probably want the same check here to make sure \u0027restart_method\u0027 is a known type?","commit_id":"696e82706d96ccdf94a0458c96c659ff2d8244f5"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"54942d3c0a336993d79e03199dca912d45b29d26","unresolved":false,"context_lines":[{"line_number":749,"context_line":"        self.services \u003d []"},{"line_number":750,"context_line":"        self.tg \u003d threadgroup.ThreadGroup()"},{"line_number":751,"context_line":"        self.done \u003d event.Event()"},{"line_number":752,"context_line":"        self.restart_method \u003d restart_method"},{"line_number":753,"context_line":""},{"line_number":754,"context_line":"    def add(self, service):"},{"line_number":755,"context_line":"        \"\"\"Add a service to a list and create a thread to run it."}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_ac00ca67","line":752,"in_reply_to":"7faddb67_fd4d1671","updated":"2019-08-29 20:30:05.000000000","message":"Done","commit_id":"696e82706d96ccdf94a0458c96c659ff2d8244f5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a1230bc5c07e7d4c7122a25bf17b06b40fa842e6","unresolved":false,"context_lines":[{"line_number":793,"context_line":"        for restart_service in self.services:"},{"line_number":794,"context_line":"            restart_service.reset()"},{"line_number":795,"context_line":"            if self.restart_method \u003d\u003d \u0027reload\u0027:"},{"line_number":796,"context_line":"                self.tg.add_thread(self.run_service,"},{"line_number":797,"context_line":"                                   restart_service,"},{"line_number":798,"context_line":"                                   self.done)"},{"line_number":799,"context_line":""},{"line_number":800,"context_line":"    @staticmethod"},{"line_number":801,"context_line":"    def run_service(service, done):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_5dac6aed","line":798,"range":{"start_line":796,"start_character":0,"end_line":798,"end_character":45},"updated":"2019-08-29 14:59:04.000000000","message":"nit: Don\u0027t think you need the wrapping","commit_id":"696e82706d96ccdf94a0458c96c659ff2d8244f5"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"a1950ebecbc17c335c0578e38f03b8913766812f","unresolved":false,"context_lines":[{"line_number":793,"context_line":"        for restart_service in self.services:"},{"line_number":794,"context_line":"            restart_service.reset()"},{"line_number":795,"context_line":"            if self.restart_method \u003d\u003d \u0027reload\u0027:"},{"line_number":796,"context_line":"                self.tg.add_thread(self.run_service,"},{"line_number":797,"context_line":"                                   restart_service,"},{"line_number":798,"context_line":"                                   self.done)"},{"line_number":799,"context_line":""},{"line_number":800,"context_line":"    @staticmethod"},{"line_number":801,"context_line":"    def run_service(service, done):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_8c32ae5d","line":798,"range":{"start_line":796,"start_character":0,"end_line":798,"end_character":45},"in_reply_to":"7faddb67_5dac6aed","updated":"2019-08-29 19:26:56.000000000","message":"The extra indentation pushed it one character over the limit. :-(\n\nI guess I decided to wrap the whole thing for readability.","commit_id":"696e82706d96ccdf94a0458c96c659ff2d8244f5"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"54942d3c0a336993d79e03199dca912d45b29d26","unresolved":false,"context_lines":[{"line_number":793,"context_line":"        for restart_service in self.services:"},{"line_number":794,"context_line":"            restart_service.reset()"},{"line_number":795,"context_line":"            if self.restart_method \u003d\u003d \u0027reload\u0027:"},{"line_number":796,"context_line":"                self.tg.add_thread(self.run_service,"},{"line_number":797,"context_line":"                                   restart_service,"},{"line_number":798,"context_line":"                                   self.done)"},{"line_number":799,"context_line":""},{"line_number":800,"context_line":"    @staticmethod"},{"line_number":801,"context_line":"    def run_service(service, done):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_6c65f248","line":798,"range":{"start_line":796,"start_character":0,"end_line":798,"end_character":45},"in_reply_to":"7faddb67_5dac6aed","updated":"2019-08-29 20:30:05.000000000","message":"it goes to 81c without it.","commit_id":"696e82706d96ccdf94a0458c96c659ff2d8244f5"}]}
