)]}'
{"neutron/plugins/common/utils.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"c4c7124b51b1b7f4ee9f2f6b82b7d77361b3ff3f","unresolved":false,"context_lines":[{"line_number":193,"context_line":"            try:"},{"line_number":194,"context_line":"                core_plugin.delete_port(context, port_id,"},{"line_number":195,"context_line":"                                        l3_port_check\u003dFalse)"},{"line_number":196,"context_line":"            except exceptions.PortNotFound:"},{"line_number":197,"context_line":"                LOG.debug(\"Port %s has already been deleted\", port_id)"},{"line_number":198,"context_line":"                ctx.reraise \u003d False"},{"line_number":199,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":1,"id":"df140735_b9b6f2f9","line":196,"updated":"2017-05-31 10:17:22.000000000","message":"Even if the port was already cleaned up, we still want to raise the original exception that was thrown from inside this decorator.\n\nThe point of the decorator is to catch and re-raise all exceptions after attempting to cleanup the port.\n\nSo I\u0027m fine with downgrading PortNotFound to a debug message, but we still need to reraise.","commit_id":"c16eaec2208eea8562eaa71b680ef4504b783d23"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e88cf589f090e2f5e13ccdf12cc8c8527ac7e5b7","unresolved":false,"context_lines":[{"line_number":193,"context_line":"            try:"},{"line_number":194,"context_line":"                core_plugin.delete_port(context, port_id,"},{"line_number":195,"context_line":"                                        l3_port_check\u003dFalse)"},{"line_number":196,"context_line":"            except exceptions.PortNotFound:"},{"line_number":197,"context_line":"                LOG.debug(\"Port %s has already been deleted\", port_id)"},{"line_number":198,"context_line":"                ctx.reraise \u003d False"},{"line_number":199,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":1,"id":"df140735_f8d57fb8","line":196,"in_reply_to":"df140735_b9b6f2f9","updated":"2017-05-31 13:47:02.000000000","message":"The problem is that rally tests will still fail and the resources will not be cleaned up correctly leaving all kinds of resources that need to be cleaned up.","commit_id":"c16eaec2208eea8562eaa71b680ef4504b783d23"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eff48ff6f49bbc22eb842a6562c4c4b306d3af26","unresolved":false,"context_lines":[{"line_number":193,"context_line":"            try:"},{"line_number":194,"context_line":"                core_plugin.delete_port(context, port_id,"},{"line_number":195,"context_line":"                                        l3_port_check\u003dFalse)"},{"line_number":196,"context_line":"            except exceptions.PortNotFound:"},{"line_number":197,"context_line":"                LOG.debug(\"Port %s has already been deleted\", port_id)"},{"line_number":198,"context_line":"                ctx.reraise \u003d False"},{"line_number":199,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":1,"id":"df140735_5299d61c","line":196,"in_reply_to":"df140735_f8d57fb8","updated":"2017-06-01 02:12:25.000000000","message":"I agree with Kevin. This decorator just ensures a given port is deleted, so it is reasonable to catch PortNotFound here and ignore an exception from L.194.\n\nOn the other hand, an exception from the yield block (L.190) should be raised to a caller and the caller is responsible to treat the exception.","commit_id":"c16eaec2208eea8562eaa71b680ef4504b783d23"}]}
