)]}'
{"neutron/agent/l2/extensions/manager.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"0cbde66c9c10d1d210644097b5c5969ccee761f7","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        for extension in self:"},{"line_number":80,"context_line":"            try:"},{"line_number":81,"context_line":"                extension.obj.delete_port(context, data)"},{"line_number":82,"context_line":"            # TODO(QoS) add agent extensions exception and catch them here"},{"line_number":83,"context_line":"            # instead of AttributeError"},{"line_number":84,"context_line":"            except AttributeError:"},{"line_number":85,"context_line":"                LOG.exception("}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_c9d227d1","side":"PARENT","line":82,"updated":"2016-06-16 15:22:25.000000000","message":"Well. The suggestion here was to add some specific exceptions for extensions that would be caught here, and allow any other errors to bubble up to the caller, in that way we would avoid swallowing unexpected exceptions here.","commit_id":"ff19748e30c69afca56f785f030ac4f901ea0310"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c27f986457e4821fe2ce273633ab6640e2a92f17","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        for extension in self:"},{"line_number":80,"context_line":"            try:"},{"line_number":81,"context_line":"                extension.obj.delete_port(context, data)"},{"line_number":82,"context_line":"            # TODO(QoS) add agent extensions exception and catch them here"},{"line_number":83,"context_line":"            # instead of AttributeError"},{"line_number":84,"context_line":"            except AttributeError:"},{"line_number":85,"context_line":"                LOG.exception("}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_f421b79f","side":"PARENT","line":82,"in_reply_to":"7aa08908_116c5507","updated":"2016-06-16 16:08:37.000000000","message":"I generally think that there is no huge reason to keep TODO. If someone has nothing to do and want to make extensions more specific about what they raise, fine, but I don\u0027t think we should track it in the code. It would be a separate RFE since the change would open e.g. compatibility questions.","commit_id":"ff19748e30c69afca56f785f030ac4f901ea0310"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"c00ed09cfb3a9597bfd27f5f6bcb8174b5c66560","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        for extension in self:"},{"line_number":80,"context_line":"            try:"},{"line_number":81,"context_line":"                extension.obj.delete_port(context, data)"},{"line_number":82,"context_line":"            # TODO(QoS) add agent extensions exception and catch them here"},{"line_number":83,"context_line":"            # instead of AttributeError"},{"line_number":84,"context_line":"            except AttributeError:"},{"line_number":85,"context_line":"                LOG.exception("}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_116c5507","side":"PARENT","line":82,"in_reply_to":"7aa08908_c9d227d1","updated":"2016-06-16 16:05:51.000000000","message":"Have we ever run into that situation?  I am working in this area at the moment, so if there are scenarios that should be covered, I figure it\u0027s do-or-die time for this TODO.","commit_id":"ff19748e30c69afca56f785f030ac4f901ea0310"}]}
