From 7f15f312448a5b78f0152b1b15456dad859f9be8 Mon Sep 17 00:00:00 2001 From: Dusty Mabe Date: Aug 14 2019 13:32:12 +0000 Subject: [PATCH 1/2] fix var use before definition Otherwise you can get: ``` Traceback (most recent call last): File "./compose_tracker.py", line 237, in c.__call__(m) File "./compose_tracker.py", line 191, in __call__ kojitaskline, text = self.get_supporting_text([line]) File "./compose_tracker.py", line 125, in get_supporting_text if not text: UnboundLocalError: local variable 'text' referenced before assignment ``` --- diff --git a/compose_tracker.py b/compose_tracker.py index 3e4e2aa..df2f64b 100755 --- a/compose_tracker.py +++ b/compose_tracker.py @@ -89,6 +89,7 @@ class Consumer(object): """ given a log file line determine if it has a koji task ID in it or not and give back an appropriate message """ + text = None for line in lines: line = line[20:] # trim date off log lines From aa8fc6265c8f34933ee04555dd0c8da2e9e2993f Mon Sep 17 00:00:00 2001 From: Dusty Mabe Date: Aug 15 2019 14:09:07 +0000 Subject: [PATCH 2/2] catch exceptions and continue Since fedora messaging will exit if we get an unhandled exception let's catch all exceptions and print out the info but ultimately pass on the exception. --- diff --git a/compose_tracker.py b/compose_tracker.py index df2f64b..e1051b5 100755 --- a/compose_tracker.py +++ b/compose_tracker.py @@ -23,6 +23,7 @@ import os import re import requests import sys +import traceback from ogr import PagureService @@ -129,6 +130,20 @@ class Consumer(object): return kojitaskline, text def __call__(self, message: fedora_messaging.api.Message): + # Catch any exceptions and don't raise them further because + # it will cause /usr/bin/fedora-messaging to crash and we'll + # lose the traceback logs from the container + try: + self.process(message) + except Exception as e: + logger.error('Caught Exception!') + logger.error('###################################') + traceback.print_exc() + logger.error('###################################') + logger.error('\t continuing...') + pass + + def process(self, message: fedora_messaging.api.Message): logger.debug(message.topic) logger.debug(message.body)