)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"75060f41c227a9be339a6f42b76c3264864d65cc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"3a461143_8f36d9b2","updated":"2017-01-25 13:16:58.000000000","message":"Could I get a little more context on this, e.g. why it\u0027s necessary and what the end result of the change will be? It sounds like something that might require a bug report too?","commit_id":"6edac912d22f8742664862bb68ab195ea24ec0bb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e69afa6969ad95cee5238892d0f1fa5c220ffde1","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"compute: reset instance events"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When the compute manager service get reloaded the instance events get"},{"line_number":10,"context_line":"cancelled and put in a status where it does not accept any new events."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This commit re-set it in a way it can handle new events"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5f4e5783_b95f1040","line":9,"range":{"start_line":9,"start_character":32,"end_line":9,"end_character":45},"updated":"2017-10-11 13:19:28.000000000","message":"e.g. via SIGHUP?","commit_id":"31ec169659641cd1abafb06a347d9f159ee55db9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e69afa6969ad95cee5238892d0f1fa5c220ffde1","unresolved":false,"context_lines":[{"line_number":7,"context_line":"compute: reset instance events"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When the compute manager service get reloaded the instance events get"},{"line_number":10,"context_line":"cancelled and put in a status where it does not accept any new events."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This commit re-set it in a way it can handle new events"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5f4e5783_995c544c","line":10,"range":{"start_line":10,"start_character":14,"end_line":10,"end_character":22},"updated":"2017-10-11 13:19:28.000000000","message":"What does?","commit_id":"31ec169659641cd1abafb06a347d9f159ee55db9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e69afa6969ad95cee5238892d0f1fa5c220ffde1","unresolved":false,"context_lines":[{"line_number":9,"context_line":"When the compute manager service get reloaded the instance events get"},{"line_number":10,"context_line":"cancelled and put in a status where it does not accept any new events."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This commit re-set it in a way it can handle new events"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Close-Bug: #1715374"},{"line_number":15,"context_line":"Change-Id: Icfef3f6e63f927f1783c7c966c89b34912ed68ab"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5f4e5783_79599858","line":12,"range":{"start_line":12,"start_character":12,"end_line":12,"end_character":18},"updated":"2017-10-11 13:19:28.000000000","message":"nit: reset","commit_id":"31ec169659641cd1abafb06a347d9f159ee55db9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ca2e51b2360998c2b7a519866d89024cb151a38e","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This commit re-set it in a way it can handle new events"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Close-Bug: #1715374"},{"line_number":15,"context_line":"Change-Id: Icfef3f6e63f927f1783c7c966c89b34912ed68ab"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9fdfeff1_e4dd9214","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":5},"updated":"2019-01-25 15:06:09.000000000","message":"Closes","commit_id":"1b138fdaf94e865042fd6ef9bf2177c16aea75f9"}],"nova/compute/manager.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"80e8a0b8109090286ab1b52c1c28b6dc0808783d","unresolved":false,"context_lines":[{"line_number":546,"context_line":"        LOG.info(\u0027Reloading compute RPC API\u0027)"},{"line_number":547,"context_line":"        compute_rpcapi.LAST_VERSION \u003d None"},{"line_number":548,"context_line":"        self.compute_rpcapi \u003d compute_rpcapi.ComputeAPI()"},{"line_number":549,"context_line":"        self.instance_events \u003d InstanceEvents()"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"    def _get_resource_tracker(self):"},{"line_number":552,"context_line":"        if not self._resource_tracker:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_1893b2fc","line":549,"updated":"2017-09-25 16:41:59.000000000","message":"the fix seems legit, but I think we should provide a nice comment explaining that since we have some in-memory triggrer that makes sure that we can only cleanup once the instance events, we need to recreate that trigger for the specific case of SIGHUP where the module is still running.","commit_id":"31ec169659641cd1abafb06a347d9f159ee55db9"},{"author":{"_account_id":2062,"name":"Ralf Haferkamp","email":"rhafer@suse.com","username":"rhafer"},"change_message_id":"6cd7a25072c17ee6cd2c369a61583804918832dc","unresolved":false,"context_lines":[{"line_number":546,"context_line":"        LOG.info(\u0027Reloading compute RPC API\u0027)"},{"line_number":547,"context_line":"        compute_rpcapi.LAST_VERSION \u003d None"},{"line_number":548,"context_line":"        self.compute_rpcapi \u003d compute_rpcapi.ComputeAPI()"},{"line_number":549,"context_line":"        self.instance_events \u003d InstanceEvents()"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"    def _get_resource_tracker(self):"},{"line_number":552,"context_line":"        if not self._resource_tracker:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_2106151f","line":549,"in_reply_to":"5f7c97a3_7ca0b6f4","updated":"2019-01-28 07:54:59.000000000","message":"Basically when nova-compute receives a SIGUP the \"cleanup_host()\" method is called. Which will cancel all \"in-flight\" events and block any new by setting self.instance_events to nil. I\u0027ve added a clarifying comment. Hope that helps.","commit_id":"31ec169659641cd1abafb06a347d9f159ee55db9"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a1e0750febfd8352ea4e9dd8678a2d817cfd8361","unresolved":false,"context_lines":[{"line_number":546,"context_line":"        LOG.info(\u0027Reloading compute RPC API\u0027)"},{"line_number":547,"context_line":"        compute_rpcapi.LAST_VERSION \u003d None"},{"line_number":548,"context_line":"        self.compute_rpcapi \u003d compute_rpcapi.ComputeAPI()"},{"line_number":549,"context_line":"        self.instance_events \u003d InstanceEvents()"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"    def _get_resource_tracker(self):"},{"line_number":552,"context_line":"        if not self._resource_tracker:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_7ca0b6f4","line":549,"in_reply_to":"7f515b1d_1893b2fc","updated":"2018-05-16 15:14:12.000000000","message":"Yeah, I definitely don\u0027t understand why this is legit. What about a SIGHUP makes waiting events no longer operable? AFAICT, if we have any instances blocked on boot waiting for neutron events, then do a SIGHUP, even if the event arrives, it won\u0027t be delivered and then the waiting thread will just time out and fail.","commit_id":"31ec169659641cd1abafb06a347d9f159ee55db9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"993fd848fc4ca47852bf54e4983b6dc7cc4dc0f4","unresolved":false,"context_lines":[{"line_number":550,"context_line":"        self.compute_rpcapi \u003d compute_rpcapi.ComputeAPI()"},{"line_number":551,"context_line":"        self.reportclient.clear_provider_cache()"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"        # Restablish instance_events. As part of the service restart"},{"line_number":554,"context_line":"        # cleanup_host() has canceled all events and blocked any new from"},{"line_number":555,"context_line":"        # coming in."},{"line_number":556,"context_line":"        self.instance_events \u003d InstanceEvents()"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_e122fba2","line":553,"range":{"start_line":553,"start_character":10,"end_line":553,"end_character":20},"updated":"2019-02-15 14:57:47.000000000","message":"Reestablish","commit_id":"8151732961bd5dcd51eca5435d6c6730b258250a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"993fd848fc4ca47852bf54e4983b6dc7cc4dc0f4","unresolved":false,"context_lines":[{"line_number":550,"context_line":"        self.compute_rpcapi \u003d compute_rpcapi.ComputeAPI()"},{"line_number":551,"context_line":"        self.reportclient.clear_provider_cache()"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"        # Restablish instance_events. As part of the service restart"},{"line_number":554,"context_line":"        # cleanup_host() has canceled all events and blocked any new from"},{"line_number":555,"context_line":"        # coming in."},{"line_number":556,"context_line":"        self.instance_events \u003d InstanceEvents()"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_01013f05","line":553,"range":{"start_line":553,"start_character":53,"end_line":553,"end_character":68},"updated":"2019-02-15 14:57:47.000000000","message":"https://github.com/openstack/nova/blob/8e9fa1ad1e55a2b40e4c74f4c64a042a829b36a5/nova/service.py#L286","commit_id":"8151732961bd5dcd51eca5435d6c6730b258250a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e49009ca6c9a43327b435f990039930a1b4812fe","unresolved":false,"context_lines":[{"line_number":550,"context_line":"        self.compute_rpcapi \u003d compute_rpcapi.ComputeAPI()"},{"line_number":551,"context_line":"        self.reportclient.clear_provider_cache()"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"        # Restablish instance_events. As part of the service restart"},{"line_number":554,"context_line":"        # cleanup_host() has canceled all events and blocked any new from"},{"line_number":555,"context_line":"        # coming in."},{"line_number":556,"context_line":"        self.instance_events \u003d InstanceEvents()"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_f444b7ba","line":553,"range":{"start_line":553,"start_character":10,"end_line":553,"end_character":20},"in_reply_to":"9fdfeff1_e122fba2","updated":"2019-03-04 16:01:49.000000000","message":"SIGHUP does not cause manager.stop() to be run, so I\u0027m not sure what this link has to do with anything. Service.reset() calls self.manager.reset() which is this method. Why do you think Service.stop() gets called? If it did, it would be severing all RPC connections and causing any in-flight operations from the API to fail, which is kindof exactly what SIGHUP is supposed to be doing (i.e. a very graceful warm reload of some things).\n\nIf something else is making us stop() and restart, that\u0027s a problem.","commit_id":"8151732961bd5dcd51eca5435d6c6730b258250a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"993fd848fc4ca47852bf54e4983b6dc7cc4dc0f4","unresolved":false,"context_lines":[{"line_number":551,"context_line":"        self.reportclient.clear_provider_cache()"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"        # Restablish instance_events. As part of the service restart"},{"line_number":554,"context_line":"        # cleanup_host() has canceled all events and blocked any new from"},{"line_number":555,"context_line":"        # coming in."},{"line_number":556,"context_line":"        self.instance_events \u003d InstanceEvents()"},{"line_number":557,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_012a9f7d","line":554,"range":{"start_line":554,"start_character":10,"end_line":554,"end_character":24},"updated":"2019-02-15 14:57:47.000000000","message":"https://github.com/openstack/nova/blob/8e9fa1ad1e55a2b40e4c74f4c64a042a829b36a5/nova/compute/manager.py#L1237","commit_id":"8151732961bd5dcd51eca5435d6c6730b258250a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"993fd848fc4ca47852bf54e4983b6dc7cc4dc0f4","unresolved":false,"context_lines":[{"line_number":551,"context_line":"        self.reportclient.clear_provider_cache()"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"        # Restablish instance_events. As part of the service restart"},{"line_number":554,"context_line":"        # cleanup_host() has canceled all events and blocked any new from"},{"line_number":555,"context_line":"        # coming in."},{"line_number":556,"context_line":"        self.instance_events \u003d InstanceEvents()"},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"    def _update_resource_tracker(self, context, instance):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_46e2fda1","line":555,"range":{"start_line":554,"start_character":29,"end_line":555,"end_character":20},"updated":"2019-02-15 14:57:47.000000000","message":"https://github.com/openstack/nova/blob/8e9fa1ad1e55a2b40e4c74f4c64a042a829b36a5/nova/compute/manager.py#L396","commit_id":"8151732961bd5dcd51eca5435d6c6730b258250a"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"80e8a0b8109090286ab1b52c1c28b6dc0808783d","unresolved":false,"context_lines":[{"line_number":3866,"context_line":""},{"line_number":3867,"context_line":"    @mock.patch(\u0027nova.compute.manager.InstanceEvents\u0027)"},{"line_number":3868,"context_line":"    @mock.patch(\u0027nova.compute.rpcapi.ComputeAPI\u0027)"},{"line_number":3869,"context_line":"    def test_reset_reloads_rpcapi(self, mock_rpc, mock_events):"},{"line_number":3870,"context_line":"        orig_rpc \u003d self.compute.compute_rpcapi"},{"line_number":3871,"context_line":"        orig_events \u003d self.compute.instance_events"},{"line_number":3872,"context_line":"        self.compute.reset()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_98b8c276","line":3869,"updated":"2017-09-25 16:41:59.000000000","message":"nit: the test name seems verifying more than just the RPC API reload now.","commit_id":"31ec169659641cd1abafb06a347d9f159ee55db9"},{"author":{"_account_id":2062,"name":"Ralf Haferkamp","email":"rhafer@suse.com","username":"rhafer"},"change_message_id":"0201eb86ce9c64481b43a478b26ca88d0479ba8d","unresolved":false,"context_lines":[{"line_number":3866,"context_line":""},{"line_number":3867,"context_line":"    @mock.patch(\u0027nova.compute.manager.InstanceEvents\u0027)"},{"line_number":3868,"context_line":"    @mock.patch(\u0027nova.compute.rpcapi.ComputeAPI\u0027)"},{"line_number":3869,"context_line":"    def test_reset_reloads_rpcapi(self, mock_rpc, mock_events):"},{"line_number":3870,"context_line":"        orig_rpc \u003d self.compute.compute_rpcapi"},{"line_number":3871,"context_line":"        orig_events \u003d self.compute.instance_events"},{"line_number":3872,"context_line":"        self.compute.reset()"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_212ff58e","line":3869,"in_reply_to":"5f4e5783_3931e00c","updated":"2019-01-28 07:56:31.000000000","message":"I split this into two separate test now. Hope that\u0027s ok as well.","commit_id":"31ec169659641cd1abafb06a347d9f159ee55db9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e69afa6969ad95cee5238892d0f1fa5c220ffde1","unresolved":false,"context_lines":[{"line_number":3866,"context_line":""},{"line_number":3867,"context_line":"    @mock.patch(\u0027nova.compute.manager.InstanceEvents\u0027)"},{"line_number":3868,"context_line":"    @mock.patch(\u0027nova.compute.rpcapi.ComputeAPI\u0027)"},{"line_number":3869,"context_line":"    def test_reset_reloads_rpcapi(self, mock_rpc, mock_events):"},{"line_number":3870,"context_line":"        orig_rpc \u003d self.compute.compute_rpcapi"},{"line_number":3871,"context_line":"        orig_events \u003d self.compute.instance_events"},{"line_number":3872,"context_line":"        self.compute.reset()"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f4e5783_3931e00c","line":3869,"in_reply_to":"7f515b1d_98b8c276","updated":"2017-10-11 13:19:28.000000000","message":"Yup. Could you rename this?","commit_id":"31ec169659641cd1abafb06a347d9f159ee55db9"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e49009ca6c9a43327b435f990039930a1b4812fe","unresolved":false,"context_lines":[{"line_number":4731,"context_line":"        with mock.patch(\u0027nova.compute.manager.InstanceEvents\u0027) as mock_events:"},{"line_number":4732,"context_line":"            self.compute.reset()"},{"line_number":4733,"context_line":"            mock_events.assert_called_once_with()"},{"line_number":4734,"context_line":"            self.assertIsNot(orig_events, self.compute.instance_events)"},{"line_number":4735,"context_line":""},{"line_number":4736,"context_line":"    @mock.patch(\u0027nova.objects.BlockDeviceMappingList.get_by_instance_uuid\u0027)"},{"line_number":4737,"context_line":"    @mock.patch(\u0027nova.compute.manager.ComputeManager._delete_instance\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_94ebeb76","line":4734,"updated":"2019-03-04 16:01:49.000000000","message":"This test, of course, doesn\u0027t show anything useful _at_all_ because it doesn\u0027t address the assertion that we\u0027re running stop() on a SIGHUP, just that we\u0027re doing the claimed better behavior when we run the few lines of code in our reset() method.","commit_id":"8151732961bd5dcd51eca5435d6c6730b258250a"}]}
