)]}'
{"neutron/agent/dhcp/agent.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"12a2b2e7af168d30edd1a30641f4e79329491179","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            for network_id in self._network_bulk_allocations.keys():"},{"line_number":155,"context_line":"                network \u003d self.cache.get_network_by_id(network_id)"},{"line_number":156,"context_line":"                self.call_driver(\u0027bulk_reload_allocations\u0027, network)"},{"line_number":157,"context_line":"                del self._network_bulk_allocations[network_id]"},{"line_number":158,"context_line":"            eventlet.greenthread.sleep(self.conf.bulk_reload_interval)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def call_driver(self, action, network, **action_kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_35d46ae9","side":"PARENT","line":157,"updated":"2020-07-22 09:31:26.000000000","message":"You can use the same logic here and delete the dictionary in this line, out of the \"for\" loop. This change needs only one single line.","commit_id":"927b1dd804ce6696f163a9d71281bdfcd8005821"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"20ffbfe7aa4dbd7fd36f07f43aa1e411b02453fb","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            for network_id in self._network_bulk_allocations.keys():"},{"line_number":155,"context_line":"                network \u003d self.cache.get_network_by_id(network_id)"},{"line_number":156,"context_line":"                self.call_driver(\u0027bulk_reload_allocations\u0027, network)"},{"line_number":157,"context_line":"                del self._network_bulk_allocations[network_id]"},{"line_number":158,"context_line":"            eventlet.greenthread.sleep(self.conf.bulk_reload_interval)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def call_driver(self, action, network, **action_kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_75a09843","side":"PARENT","line":157,"in_reply_to":"bf51134e_15be7cfe","updated":"2020-07-22 14:39:42.000000000","message":"This loop should be executed without any interruption, that\u0027s a property of gthreads. I see no different with your implementation but when we clean \"_network_bulk_allocations\".\n\nAnyway, that\u0027s a nit.","commit_id":"927b1dd804ce6696f163a9d71281bdfcd8005821"},{"author":{"_account_id":26613,"name":"Matt Vinall","email":"boyvinall@gmail.com","username":"boyvinall"},"change_message_id":"10d86918111fba7f144e7f0f2f13db5248324dd1","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            for network_id in self._network_bulk_allocations.keys():"},{"line_number":155,"context_line":"                network \u003d self.cache.get_network_by_id(network_id)"},{"line_number":156,"context_line":"                self.call_driver(\u0027bulk_reload_allocations\u0027, network)"},{"line_number":157,"context_line":"                del self._network_bulk_allocations[network_id]"},{"line_number":158,"context_line":"            eventlet.greenthread.sleep(self.conf.bulk_reload_interval)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def call_driver(self, action, network, **action_kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_ea6db7cc","side":"PARENT","line":157,"in_reply_to":"bf51134e_31a0dea5","updated":"2020-08-01 18:15:28.000000000","message":"Hi Rodolfo, just wanted to follow up.  Do you want this to be changed or are you happy to go ahead as-is?  Thanks.","commit_id":"927b1dd804ce6696f163a9d71281bdfcd8005821"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3f27dd337a6a5ae135b517f4dd09ac1f4ce7044d","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            for network_id in self._network_bulk_allocations.keys():"},{"line_number":155,"context_line":"                network \u003d self.cache.get_network_by_id(network_id)"},{"line_number":156,"context_line":"                self.call_driver(\u0027bulk_reload_allocations\u0027, network)"},{"line_number":157,"context_line":"                del self._network_bulk_allocations[network_id]"},{"line_number":158,"context_line":"            eventlet.greenthread.sleep(self.conf.bulk_reload_interval)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def call_driver(self, action, network, **action_kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_b5019a6d","side":"PARENT","line":157,"in_reply_to":"bf51134e_35d46ae9","updated":"2020-07-22 09:32:17.000000000","message":"for network_id in self._network_bulk_allocations.keys():\n    network \u003d self.cache.get_network_by_id(network_id)\n    self.call_driver(\u0027bulk_reload_allocations\u0027, network)\nself._network_bulk_allocations \u003d {}","commit_id":"927b1dd804ce6696f163a9d71281bdfcd8005821"},{"author":{"_account_id":26613,"name":"Matt Vinall","email":"boyvinall@gmail.com","username":"boyvinall"},"change_message_id":"a833355a38bca6185b70dd6cdb6880a77cc259ca","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            for network_id in self._network_bulk_allocations.keys():"},{"line_number":155,"context_line":"                network \u003d self.cache.get_network_by_id(network_id)"},{"line_number":156,"context_line":"                self.call_driver(\u0027bulk_reload_allocations\u0027, network)"},{"line_number":157,"context_line":"                del self._network_bulk_allocations[network_id]"},{"line_number":158,"context_line":"            eventlet.greenthread.sleep(self.conf.bulk_reload_interval)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def call_driver(self, action, network, **action_kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_31a0dea5","side":"PARENT","line":157,"in_reply_to":"bf51134e_75a09843","updated":"2020-07-23 09:52:46.000000000","message":"yeah sure, I just think the call stack down the call_driver is a bit deeper, so the potential for a yield to be added somewhere under there in future is higher?","commit_id":"927b1dd804ce6696f163a9d71281bdfcd8005821"},{"author":{"_account_id":26613,"name":"Matt Vinall","email":"boyvinall@gmail.com","username":"boyvinall"},"change_message_id":"c71cf62ff1baacc3f34680d408ffe6b7e227a5fc","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            for network_id in self._network_bulk_allocations.keys():"},{"line_number":155,"context_line":"                network \u003d self.cache.get_network_by_id(network_id)"},{"line_number":156,"context_line":"                self.call_driver(\u0027bulk_reload_allocations\u0027, network)"},{"line_number":157,"context_line":"                del self._network_bulk_allocations[network_id]"},{"line_number":158,"context_line":"            eventlet.greenthread.sleep(self.conf.bulk_reload_interval)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def call_driver(self, action, network, **action_kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_15be7cfe","side":"PARENT","line":157,"in_reply_to":"bf51134e_b5019a6d","updated":"2020-07-22 14:31:04.000000000","message":"I think doing that would give more chance of the greenthread yielding, which could end up in a race hazard where dictionary entries are cleared but not acted upon?","commit_id":"927b1dd804ce6696f163a9d71281bdfcd8005821"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0c08366c535afd11a18d7cd5bc339eca322b1db1","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            # No need to lock access to _network_bulk_allocations because"},{"line_number":155,"context_line":"            # greenthreads multi-task co-operatively."},{"line_number":156,"context_line":"            to_reload \u003d self._network_bulk_allocations.keys()"},{"line_number":157,"context_line":"            self._network_bulk_allocations \u003d {}"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"            for network_id in to_reload:"},{"line_number":160,"context_line":"                network \u003d self.cache.get_network_by_id(network_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_68d9bdf2","line":157,"updated":"2020-07-24 02:08:23.000000000","message":"Thanks for looking Rodolfo.  I had only suggested this way since it matched what we do in the OVS rpc_loop() code, learned something new about green threads though :)","commit_id":"34dc925b98047e8a12b456d1bb4404e6bdfdbd7b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"76298e2ce374755e265c3c70413ddade3cc03030","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            self._network_bulk_allocations \u003d {}"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"            for network_id in to_reload:"},{"line_number":160,"context_line":"                network \u003d self.cache.get_network_by_id(network_id)"},{"line_number":161,"context_line":"                self.call_driver(\u0027bulk_reload_allocations\u0027, network)"},{"line_number":162,"context_line":"            eventlet.greenthread.sleep(self.conf.bulk_reload_interval)"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_d44f5b68","line":160,"updated":"2020-08-07 14:13:38.000000000","message":"Hi Matt:\n\nI think we can kill two birds with one stone.\n\nYou also opened https://bugs.launchpad.net/neutron/+bug/1890027. Is this is true, here you should also check that \"self.cache.get_network_by_id(network_id)\" returns something. I \"network\" is None (that\u0027s what I infer from the LP bug), the driver call \"bulk_reload_allocations\" should not be done.\n\nAm I right?","commit_id":"34dc925b98047e8a12b456d1bb4404e6bdfdbd7b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e555593dc5ef6e73f281fa9f636622afcd9e6563","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            self._network_bulk_allocations \u003d {}"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"            for network_id in to_reload:"},{"line_number":160,"context_line":"                network \u003d self.cache.get_network_by_id(network_id)"},{"line_number":161,"context_line":"                self.call_driver(\u0027bulk_reload_allocations\u0027, network)"},{"line_number":162,"context_line":"            eventlet.greenthread.sleep(self.conf.bulk_reload_interval)"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_eec8cb55","line":160,"in_reply_to":"9f560f44_d44f5b68","updated":"2020-08-07 16:58:54.000000000","message":"Rodolfo - I would agree, we should just fix both at the same time by putting this under an \u0027if network:\u0027 check","commit_id":"34dc925b98047e8a12b456d1bb4404e6bdfdbd7b"},{"author":{"_account_id":26613,"name":"Matt Vinall","email":"boyvinall@gmail.com","username":"boyvinall"},"change_message_id":"4bda60459e13f7a81ea1a99c5289a400dd0738dc","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            self._network_bulk_allocations \u003d {}"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"            for network_id in to_reload:"},{"line_number":160,"context_line":"                network \u003d self.cache.get_network_by_id(network_id)"},{"line_number":161,"context_line":"                self.call_driver(\u0027bulk_reload_allocations\u0027, network)"},{"line_number":162,"context_line":"            eventlet.greenthread.sleep(self.conf.bulk_reload_interval)"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_6a649e4a","line":160,"in_reply_to":"9f560f44_eec8cb55","updated":"2020-08-08 22:03:09.000000000","message":"Hi both, sure no problem. I wasn\u0027t initially sure whether simply checking the return there would be sufficient when the network was deleted .. was there actually something else we needed the driver to do.  However, I\u0027ve tried what you suggested and it seems to work fine.  I\u0027ll push a patch for that now.","commit_id":"34dc925b98047e8a12b456d1bb4404e6bdfdbd7b"},{"author":{"_account_id":26613,"name":"Matt Vinall","email":"boyvinall@gmail.com","username":"boyvinall"},"change_message_id":"74c839b0fb02fba004783abcf65bda451429796a","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"            for network_id in to_reload:"},{"line_number":160,"context_line":"                network \u003d self.cache.get_network_by_id(network_id)"},{"line_number":161,"context_line":"                if network is not None:"},{"line_number":162,"context_line":"                    self.call_driver(\u0027bulk_reload_allocations\u0027, network)"},{"line_number":163,"context_line":"            eventlet.greenthread.sleep(self.conf.bulk_reload_interval)"},{"line_number":164,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_273aa6e6","line":161,"updated":"2020-08-13 13:57:33.000000000","message":"so it seems like this line causes some problems for some tests, I will try to follow through and work out what else is needed but I won\u0027t have time for that in the next week/two.","commit_id":"524d5a713acefa5a2f2ec71837eff423a560107b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"46b5a7c3f3e890c5e6737936072a47062ba32289","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"            for network_id in to_reload:"},{"line_number":160,"context_line":"                network \u003d self.cache.get_network_by_id(network_id)"},{"line_number":161,"context_line":"                if network is not None:"},{"line_number":162,"context_line":"                    self.call_driver(\u0027bulk_reload_allocations\u0027, network)"},{"line_number":163,"context_line":"            eventlet.greenthread.sleep(self.conf.bulk_reload_interval)"},{"line_number":164,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_8231e0ef","line":161,"in_reply_to":"9f560f44_273aa6e6","updated":"2020-08-13 14:08:30.000000000","message":"I can\u0027t tell if it\u0027s causing an error, but there were some issues with other projects causing grenade to fail, I\u0027ll recheck.\n\nnit: s/if network:","commit_id":"524d5a713acefa5a2f2ec71837eff423a560107b"}]}
