)]}'
{"neutron/plugins/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"80362bd65d148cce6dfca5769ffbe33aee96dd64","unresolved":false,"context_lines":[{"line_number":343,"context_line":"        self.sg_agent.remove_devices_filter([port_id])"},{"line_number":344,"context_line":"        port \u003d self.int_br.get_vif_port_by_id(port_id)"},{"line_number":345,"context_line":"        if port:"},{"line_number":346,"context_line":"            self.port_dead(port)"},{"line_number":347,"context_line":"        self.port_unbound(port_id)"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def tunnel_update(self, context, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3acd31a7_b291e59b","line":346,"updated":"2015-05-01 19:05:22.000000000","message":"If the port had been deleted prior to the port_dead call, exception would result inside port_dead. E.g., nova could have deleted the port. I think that a try block to catch the exception is necessary in here and comments about why it\u0027s necessary.","commit_id":"fe995cdd1e8c3225ce3d8904bf922c3eec1b9f68"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"0fd604447ca2feae332445d1fe6bb24a622dc109","unresolved":false,"context_lines":[{"line_number":343,"context_line":"        self.sg_agent.remove_devices_filter([port_id])"},{"line_number":344,"context_line":"        port \u003d self.int_br.get_vif_port_by_id(port_id)"},{"line_number":345,"context_line":"        if port:"},{"line_number":346,"context_line":"            self.port_dead(port)"},{"line_number":347,"context_line":"        self.port_unbound(port_id)"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def tunnel_update(self, context, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3acd31a7_538c89d9","line":346,"in_reply_to":"3acd31a7_1c02ab3d","updated":"2015-05-05 15:04:02.000000000","message":"Check this paste:http://paste.openstack.org/show/214975/\n\nNote that due to the nature of the issue, it\u0027s not easily reproducible.","commit_id":"fe995cdd1e8c3225ce3d8904bf922c3eec1b9f68"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"299607fc67b301746731431da8f726f82608dd65","unresolved":false,"context_lines":[{"line_number":343,"context_line":"        self.sg_agent.remove_devices_filter([port_id])"},{"line_number":344,"context_line":"        port \u003d self.int_br.get_vif_port_by_id(port_id)"},{"line_number":345,"context_line":"        if port:"},{"line_number":346,"context_line":"            self.port_dead(port)"},{"line_number":347,"context_line":"        self.port_unbound(port_id)"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def tunnel_update(self, context, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aca2d91_e00c1996","line":346,"in_reply_to":"3acd31a7_538c89d9","updated":"2015-05-07 21:25:50.000000000","message":"Those are just logged errors from here: \n\nhttps://github.com/openstack/neutron/blob/f09f88609c75002bfe6b10f1fbcf00559afff3d0/neutron/agent/ovsdb/impl_vsctl.py#L67\n\n\nA try catch won\u0027t do anything because it\u0027s not an exception. I will try to suppress the errors though.","commit_id":"fe995cdd1e8c3225ce3d8904bf922c3eec1b9f68"},{"author":{"_account_id":704,"name":"Edgar Magana","email":"emagana@gmail.com","username":"emagana"},"change_message_id":"7797ec7a61d4467ae389dd547a95279dc31d8dda","unresolved":false,"context_lines":[{"line_number":343,"context_line":"        self.sg_agent.remove_devices_filter([port_id])"},{"line_number":344,"context_line":"        port \u003d self.int_br.get_vif_port_by_id(port_id)"},{"line_number":345,"context_line":"        if port:"},{"line_number":346,"context_line":"            self.port_dead(port)"},{"line_number":347,"context_line":"        self.port_unbound(port_id)"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def tunnel_update(self, context, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3acd31a7_1fa624ae","line":346,"in_reply_to":"3acd31a7_b291e59b","updated":"2015-05-05 05:53:02.000000000","message":"I second Robert\u0027s request","commit_id":"fe995cdd1e8c3225ce3d8904bf922c3eec1b9f68"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"90d7797fc04f4242e1a258fc72e8178d329746fc","unresolved":false,"context_lines":[{"line_number":343,"context_line":"        self.sg_agent.remove_devices_filter([port_id])"},{"line_number":344,"context_line":"        port \u003d self.int_br.get_vif_port_by_id(port_id)"},{"line_number":345,"context_line":"        if port:"},{"line_number":346,"context_line":"            self.port_dead(port)"},{"line_number":347,"context_line":"        self.port_unbound(port_id)"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def tunnel_update(self, context, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3acd31a7_1c02ab3d","line":346,"in_reply_to":"3acd31a7_b291e59b","updated":"2015-05-05 10:12:29.000000000","message":"which function in port_dead will raise an exception? db_get_val and set_db_attribute both look like they don\u0027t check errors by default.","commit_id":"fe995cdd1e8c3225ce3d8904bf922c3eec1b9f68"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"b1179fc00072568a490e8644f1e8c406d308e3a7","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        self.updated_ports.add(port[\u0027id\u0027])"},{"line_number":337,"context_line":"        LOG.debug(\"port_update message processed for port %s\", port[\u0027id\u0027])"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def port_delete(self, context, **kwargs):"},{"line_number":340,"context_line":"        port_id \u003d kwargs.get(\u0027port_id\u0027)"},{"line_number":341,"context_line":"        # Flush firewall rules and move to dead VLAN so deleted ports no longer"},{"line_number":342,"context_line":"        # have access to the network"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a0c5dc1_313ef4b8","line":339,"updated":"2015-05-13 22:33:59.000000000","message":"another way to solve this problem is to create a list of deleted_port and process them in the agent rpc loop, something similar to what\u0027s done for port_update. It\u0027s a bigger change but it would be more consistent with the rest of the agent\u0027s code and would probably avoid some processing since it\u0027s likely that the same device will be both in the port_deleted list and will be detected as deleted by the agent during scan_ports.","commit_id":"386016e692a4ae159012ba2c98e123235418c845"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"35c17a3baae048c4a92b3ffeab07f009be6d089b","unresolved":false,"context_lines":[{"line_number":346,"context_line":"            # don\u0027t log errors since there is a chance someone will be removing"},{"line_number":347,"context_line":"            # the port from the bridge at the same time"},{"line_number":348,"context_line":"            self.port_dead(port, log_errors\u003dFalse)"},{"line_number":349,"context_line":"        self.port_unbound(port_id)"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"    def tunnel_update(self, context, **kwargs):"},{"line_number":352,"context_line":"        LOG.debug(\"tunnel_update received\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a0c5dc1_96397244","line":349,"updated":"2015-05-12 05:31:59.000000000","message":"making rpc consumer thread call port_dead/port_unbound scares me.\nare you sure it\u0027s safe?\nhave you considered to just record the event here and make the main thread deal with it?","commit_id":"386016e692a4ae159012ba2c98e123235418c845"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"db603b670e4abd26b658f4219753e188d82b1a73","unresolved":false,"context_lines":[{"line_number":348,"context_line":"            port_id \u003d self.deleted_ports.pop()"},{"line_number":349,"context_line":"            # Flush firewall rules and move to dead VLAN so deleted ports no"},{"line_number":350,"context_line":"            # longer have access to the network"},{"line_number":351,"context_line":"            self.sg_agent.remove_devices_filter([port_id])"},{"line_number":352,"context_line":"            port \u003d self.int_br.get_vif_port_by_id(port_id)"},{"line_number":353,"context_line":"            if port:"},{"line_number":354,"context_line":"                # don\u0027t log errors since there is a chance someone will be"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_61b04644","line":351,"updated":"2015-05-15 02:27:20.000000000","message":"better to remove the filter for the list of devices at once","commit_id":"00a9443c78584685c147cd2d780e6fa3a9d83e4c"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"62a97a929d81c35a44f8886f12b59ddc4fe55d90","unresolved":false,"context_lines":[{"line_number":348,"context_line":"            port_id \u003d self.deleted_ports.pop()"},{"line_number":349,"context_line":"            # Flush firewall rules and move to dead VLAN so deleted ports no"},{"line_number":350,"context_line":"            # longer have access to the network"},{"line_number":351,"context_line":"            self.sg_agent.remove_devices_filter([port_id])"},{"line_number":352,"context_line":"            port \u003d self.int_br.get_vif_port_by_id(port_id)"},{"line_number":353,"context_line":"            if port:"},{"line_number":354,"context_line":"                # don\u0027t log errors since there is a chance someone will be"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_2cc24586","line":351,"in_reply_to":"7a016987_4cb0e143","updated":"2015-05-15 03:09:19.000000000","message":"ok, makes sense.","commit_id":"00a9443c78584685c147cd2d780e6fa3a9d83e4c"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"6ecd6400e3689342e3263920b5a4bb8cd73320e0","unresolved":false,"context_lines":[{"line_number":348,"context_line":"            port_id \u003d self.deleted_ports.pop()"},{"line_number":349,"context_line":"            # Flush firewall rules and move to dead VLAN so deleted ports no"},{"line_number":350,"context_line":"            # longer have access to the network"},{"line_number":351,"context_line":"            self.sg_agent.remove_devices_filter([port_id])"},{"line_number":352,"context_line":"            port \u003d self.int_br.get_vif_port_by_id(port_id)"},{"line_number":353,"context_line":"            if port:"},{"line_number":354,"context_line":"                # don\u0027t log errors since there is a chance someone will be"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_4cb0e143","line":351,"in_reply_to":"7a016987_61b04644","updated":"2015-05-15 03:04:53.000000000","message":"Well I wanted to process them one at a time so we know which one to retry if an exception is encountered.\n\nI think we can bulk them up later if we find out this process is slow and often has multiple ports.","commit_id":"00a9443c78584685c147cd2d780e6fa3a9d83e4c"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"612a6f2d24825ce1238273f4eb68566846a21cc9","unresolved":false,"context_lines":[{"line_number":374,"context_line":"            port_id \u003d self.deleted_ports.pop()"},{"line_number":375,"context_line":"            # Flush firewall rules and move to dead VLAN so deleted ports no"},{"line_number":376,"context_line":"            # longer have access to the network"},{"line_number":377,"context_line":"            self.sg_agent.remove_devices_filter([port_id])"},{"line_number":378,"context_line":"            port \u003d self.int_br.get_vif_port_by_id(port_id)"},{"line_number":379,"context_line":"            if port:"},{"line_number":380,"context_line":"                # don\u0027t log errors since there is a chance someone will be"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_e1879610","line":377,"updated":"2015-05-27 01:21:15.000000000","message":"why not to put the port on dead vlan first?","commit_id":"45170e54b763c98e25847f72a2e267facd769557"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"3ca56175ad27ad1d5e20b4a7279f51b3abdf5d36","unresolved":false,"context_lines":[{"line_number":374,"context_line":"            port_id \u003d self.deleted_ports.pop()"},{"line_number":375,"context_line":"            # Flush firewall rules and move to dead VLAN so deleted ports no"},{"line_number":376,"context_line":"            # longer have access to the network"},{"line_number":377,"context_line":"            self.sg_agent.remove_devices_filter([port_id])"},{"line_number":378,"context_line":"            port \u003d self.int_br.get_vif_port_by_id(port_id)"},{"line_number":379,"context_line":"            if port:"},{"line_number":380,"context_line":"                # don\u0027t log errors since there is a chance someone will be"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_6db92279","line":377,"in_reply_to":"7a016987_e1879610","updated":"2015-05-28 07:54:08.000000000","message":"I didn\u0027t think it would matter. Do you think there is a good reason to do it in that order?","commit_id":"45170e54b763c98e25847f72a2e267facd769557"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"3b08b9bdcaee1a16a7d08a8089f619082f05f64a","unresolved":false,"context_lines":[{"line_number":1058,"context_line":"            return port_info"},{"line_number":1059,"context_line":""},{"line_number":1060,"context_line":"        port_info[\u0027added\u0027] \u003d cur_ports - registered_ports"},{"line_number":1061,"context_line":"        # Remove all the known ports not found on the integration bridge"},{"line_number":1062,"context_line":"        port_info[\u0027removed\u0027] \u003d registered_ports - cur_ports"},{"line_number":1063,"context_line":"        return port_info"},{"line_number":1064,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_5599446d","line":1061,"updated":"2015-05-28 13:02:40.000000000","message":"there\u0027s the possibility that a port is both in port_info[\u0027removed\u0027] and in self.deleted_ports . It would be better to remove the ports in port_info[\u0027removed\u0027] from self.deleted_ports before processing the deleted port, don\u0027t you think?","commit_id":"45170e54b763c98e25847f72a2e267facd769557"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"b9acbfd1af1dac0470267da06eb07ce164479303","unresolved":false,"context_lines":[{"line_number":1058,"context_line":"            return port_info"},{"line_number":1059,"context_line":""},{"line_number":1060,"context_line":"        port_info[\u0027added\u0027] \u003d cur_ports - registered_ports"},{"line_number":1061,"context_line":"        # Remove all the known ports not found on the integration bridge"},{"line_number":1062,"context_line":"        port_info[\u0027removed\u0027] \u003d registered_ports - cur_ports"},{"line_number":1063,"context_line":"        return port_info"},{"line_number":1064,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_22b2f394","line":1061,"in_reply_to":"7a016987_5599446d","updated":"2015-05-28 23:14:21.000000000","message":"ok","commit_id":"45170e54b763c98e25847f72a2e267facd769557"}]}
