)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"27b996f24b83591a6797b4d91b8bec597748b4ed","unresolved":false,"context_lines":[{"line_number":11,"context_line":" 2) Delete old rules with old cookie"},{"line_number":12,"context_line":" 3) Change new cookie back to old cookie"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"and the step 2) uses --strict parameter, it\u0027s need to apply rules before"},{"line_number":15,"context_line":"deleting the old rules because --strict parameter cannot be combined"},{"line_number":16,"context_line":"with non-strict. This patch applies openflow rules after step 1), then"},{"line_number":17,"context_line":"--strict rules in step 2 are applied right away and then rest of delete"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9f6a8fd7_f08482b3","line":14,"range":{"start_line":14,"start_character":46,"end_line":14,"end_character":50},"updated":"2018-04-19 08:22:28.000000000","message":"nit: needed","commit_id":"2fbf9f30c6baebaf3f006c6ce18b42231932b8c5"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"ae63b318dbefd21f12ad55080b61601c62fe4670","unresolved":false,"context_lines":[{"line_number":11,"context_line":" 2) Delete old rules with old cookie"},{"line_number":12,"context_line":" 3) Change new cookie back to old cookie"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"and the step 2) uses --strict parameter, it\u0027s need to apply rules before"},{"line_number":15,"context_line":"deleting the old rules because --strict parameter cannot be combined"},{"line_number":16,"context_line":"with non-strict. This patch applies openflow rules after step 1), then"},{"line_number":17,"context_line":"--strict rules in step 2 are applied right away and then rest of delete"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9f6a8fd7_8444ebb8","line":14,"range":{"start_line":14,"start_character":46,"end_line":14,"end_character":50},"in_reply_to":"9f6a8fd7_f08482b3","updated":"2018-04-19 08:55:06.000000000","message":"Done","commit_id":"2fbf9f30c6baebaf3f006c6ce18b42231932b8c5"}],"neutron/agent/linux/openvswitch_firewall/firewall.py":[{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"27b996f24b83591a6797b4d91b8bec597748b4ed","unresolved":false,"context_lines":[{"line_number":575,"context_line":"    def _update_flows_for_port(self, of_port, old_of_port):"},{"line_number":576,"context_line":"        with self.update_cookie_context():"},{"line_number":577,"context_line":"            self._set_port_filters(of_port)"},{"line_number":578,"context_line":"        self.int_br.apply_flows()"},{"line_number":579,"context_line":"        self.delete_all_port_flows(old_of_port)"},{"line_number":580,"context_line":"        # Rewrite update cookie with default cookie"},{"line_number":581,"context_line":"        self._set_port_filters(of_port)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f6a8fd7_10a01643","line":578,"updated":"2018-04-19 08:22:28.000000000","message":"SecurityGroupAgentRpc._apply_port_filter expects the whole rules among ports are updated at once.\nCalling apply_flows here changes that behavior.\nI\u0027m not sure if this causes unintended side effects.","commit_id":"2fbf9f30c6baebaf3f006c6ce18b42231932b8c5"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"ae63b318dbefd21f12ad55080b61601c62fe4670","unresolved":false,"context_lines":[{"line_number":575,"context_line":"    def _update_flows_for_port(self, of_port, old_of_port):"},{"line_number":576,"context_line":"        with self.update_cookie_context():"},{"line_number":577,"context_line":"            self._set_port_filters(of_port)"},{"line_number":578,"context_line":"        self.int_br.apply_flows()"},{"line_number":579,"context_line":"        self.delete_all_port_flows(old_of_port)"},{"line_number":580,"context_line":"        # Rewrite update cookie with default cookie"},{"line_number":581,"context_line":"        self._set_port_filters(of_port)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f6a8fd7_644997ce","line":578,"in_reply_to":"9f6a8fd7_10a01643","updated":"2018-04-19 08:55:06.000000000","message":"Thanks for heads up, let\u0027s investigate. Why is it required to be updated at once? The deferred bridge class eventually groups actions to add, del and mod and hence it\u0027s not done atomically anyway. Is it something related to native interface split?","commit_id":"2fbf9f30c6baebaf3f006c6ce18b42231932b8c5"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e36ce7c885d1e8d09d44a974ef0faa007f480439","unresolved":false,"context_lines":[{"line_number":575,"context_line":"    def _update_flows_for_port(self, of_port, old_of_port):"},{"line_number":576,"context_line":"        with self.update_cookie_context():"},{"line_number":577,"context_line":"            self._set_port_filters(of_port)"},{"line_number":578,"context_line":"        self.int_br.apply_flows()"},{"line_number":579,"context_line":"        self.delete_all_port_flows(old_of_port)"},{"line_number":580,"context_line":"        # Rewrite update cookie with default cookie"},{"line_number":581,"context_line":"        self._set_port_filters(of_port)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f6a8fd7_b4ba02be","line":578,"in_reply_to":"9f6a8fd7_1153c03a","updated":"2018-04-25 08:40:55.000000000","message":"Thanks :) I\u0027m looking forward to be able to handle this in a single transaction :)","commit_id":"2fbf9f30c6baebaf3f006c6ce18b42231932b8c5"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"49938a79660db1fc27ffc857e5ab8f5f53c53fbb","unresolved":false,"context_lines":[{"line_number":575,"context_line":"    def _update_flows_for_port(self, of_port, old_of_port):"},{"line_number":576,"context_line":"        with self.update_cookie_context():"},{"line_number":577,"context_line":"            self._set_port_filters(of_port)"},{"line_number":578,"context_line":"        self.int_br.apply_flows()"},{"line_number":579,"context_line":"        self.delete_all_port_flows(old_of_port)"},{"line_number":580,"context_line":"        # Rewrite update cookie with default cookie"},{"line_number":581,"context_line":"        self._set_port_filters(of_port)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f6a8fd7_c85729ca","line":578,"in_reply_to":"9f6a8fd7_644997ce","updated":"2018-04-20 17:11:28.000000000","message":"I don\u0027t know the answer to the question, but putting even a small comment here would be useful so noone removes this a year from now.","commit_id":"2fbf9f30c6baebaf3f006c6ce18b42231932b8c5"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"9e4d5c2811183998ce169350d21f77fb09b2dbd4","unresolved":false,"context_lines":[{"line_number":575,"context_line":"    def _update_flows_for_port(self, of_port, old_of_port):"},{"line_number":576,"context_line":"        with self.update_cookie_context():"},{"line_number":577,"context_line":"            self._set_port_filters(of_port)"},{"line_number":578,"context_line":"        self.int_br.apply_flows()"},{"line_number":579,"context_line":"        self.delete_all_port_flows(old_of_port)"},{"line_number":580,"context_line":"        # Rewrite update cookie with default cookie"},{"line_number":581,"context_line":"        self._set_port_filters(of_port)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f6a8fd7_1153c03a","line":578,"in_reply_to":"9f6a8fd7_644997ce","updated":"2018-04-25 08:18:12.000000000","message":"The OpenFlow spec is able to bundle all those add, del and mod into one. It is just from ovs-ofctl limitation.\n\nThe \"right\" fix needs some time to be ready, though. ;)","commit_id":"2fbf9f30c6baebaf3f006c6ce18b42231932b8c5"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"5972e3c9eb510892f458ce7553fab43ed8c6298e","unresolved":false,"context_lines":[{"line_number":575,"context_line":"    def _update_flows_for_port(self, of_port, old_of_port):"},{"line_number":576,"context_line":"        with self.update_cookie_context():"},{"line_number":577,"context_line":"            self._set_port_filters(of_port)"},{"line_number":578,"context_line":"        self.int_br.apply_flows()"},{"line_number":579,"context_line":"        self.delete_all_port_flows(old_of_port)"},{"line_number":580,"context_line":"        # Rewrite update cookie with default cookie"},{"line_number":581,"context_line":"        self._set_port_filters(of_port)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f6a8fd7_097c391d","line":578,"in_reply_to":"9f6a8fd7_c85729ca","updated":"2018-04-21 19:36:53.000000000","message":"Done","commit_id":"2fbf9f30c6baebaf3f006c6ce18b42231932b8c5"}],"neutron/tests/common/net_helpers.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"49938a79660db1fc27ffc857e5ab8f5f53c53fbb","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        self.destination_unreachable \u003d False"},{"line_number":363,"context_line":"        self.sent \u003d 0"},{"line_number":364,"context_line":"        self.received \u003d 0"},{"line_number":365,"context_line":"        self.interval \u003d interval"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"    def _wait_for_death(self):"},{"line_number":368,"context_line":"        is_dead \u003d lambda: self.proc.poll() is not None"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f6a8fd7_080761cc","line":365,"updated":"2018-04-20 17:11:28.000000000","message":"Why did you need to change the Pinger class?  It\u0027s not mentioned in the commit message.","commit_id":"2fbf9f30c6baebaf3f006c6ce18b42231932b8c5"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"5972e3c9eb510892f458ce7553fab43ed8c6298e","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        self.destination_unreachable \u003d False"},{"line_number":363,"context_line":"        self.sent \u003d 0"},{"line_number":364,"context_line":"        self.received \u003d 0"},{"line_number":365,"context_line":"        self.interval \u003d interval"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"    def _wait_for_death(self):"},{"line_number":368,"context_line":"        is_dead \u003d lambda: self.proc.poll() is not None"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f6a8fd7_e97ea517","line":365,"in_reply_to":"9f6a8fd7_080761cc","updated":"2018-04-21 19:36:53.000000000","message":"To increase reproduce ratio. When I send 3 ICMP packets per second it has a higher chance to hit time when firewall is being updated than 1 packet per second. The packets got through only between _set_port_filters and delete_all_port_flows which is a small window. I\u0027ll add it to commit message.","commit_id":"2fbf9f30c6baebaf3f006c6ce18b42231932b8c5"}]}
