Do exception logging at Request level and discard duplicate exception messages between retries

This commit is contained in:
Fabio Manganiello 2019-01-13 20:09:25 +01:00
parent 8ea0519954
commit db4e68e247
2 changed files with 14 additions and 17 deletions

View file

@ -215,12 +215,15 @@ class Request(Message):
format(plugin, self.action, str(response))) format(plugin, self.action, str(response)))
except Exception as e: except Exception as e:
# Retry mechanism # Retry mechanism
plugin.logger.exception(e)
logger.warning(('Uncaught exception while processing response ' + logger.warning(('Uncaught exception while processing response ' +
'from action {}.{}: {}').format( 'from action {}.{}: {}').format(
plugin, self.action, str(e))) plugin, self.action, str(e)))
errors = errors or [] errors = errors or []
if str(e) not in errors:
errors.append(str(e)) errors.append(str(e))
response = Response(output=None, errors=errors) response = Response(output=None, errors=errors)
if n_tries-1 > 0: if n_tries-1 > 0:
logger.info('Reloading plugin {} and retrying'.format(module_name)) logger.info('Reloading plugin {} and retrying'.format(module_name))

View file

@ -14,7 +14,6 @@ def action(f):
output = None output = None
errors = [] errors = []
try:
output = f(*args, **kwargs) output = f(*args, **kwargs)
if output and isinstance(output, Response): if output and isinstance(output, Response):
errors = output.errors \ errors = output.errors \
@ -26,11 +25,6 @@ def action(f):
if len(errors) == 1 and errors[0] is None: errors = [] if len(errors) == 1 and errors[0] is None: errors = []
output = output[0] output = output[0]
except Exception as e:
if isinstance(args[0], Plugin):
args[0].logger.exception(e)
raise e
# errors.append(str(e) + '\n' + traceback.format_exc())
return Response(output=output, errors=errors) return Response(output=output, errors=errors)