From 5112c3b9a4c2e6ce45aa79d6a135b47aa2857b70 Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Wed, 26 Sep 2018 18:10:45 +0000 Subject: [PATCH] Make fedmsg error handling py3 compatible. Quite "innovative" code in here... --- roles/fedmsg/base/templates/logging.py.j2 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/roles/fedmsg/base/templates/logging.py.j2 b/roles/fedmsg/base/templates/logging.py.j2 index 4be3fd9918..6812c06c33 100644 --- a/roles/fedmsg/base/templates/logging.py.j2 +++ b/roles/fedmsg/base/templates/logging.py.j2 @@ -64,7 +64,7 @@ class ContextInjector(logging.Filter): record.callstack = self.format_callstack() record.farewell = "" - key = hashlib.sha256(record.callstack).hexdigest() + key = hashlib.sha256(record.callstack.encode("utf-8")).hexdigest() if not key in seen_errors: seen_errors[key] = 0 @@ -123,6 +123,9 @@ class ContextInjector(logging.Filter): break def _format_frame(frame): + if type(frame) not in [tuple, list]: + # It must be FrameSummary, convert it to tuples. + frame = (frame.filename, frame.lineno, frame.name, "") return ' File "%s", line %i in %s\n %s' % (frame) stack = traceback.extract_stack()