From fa0dfc9cacf0085895e7c318c4612bd06e39fa54 Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Jan 15 2020 07:54:07 +0000 Subject: backend: RedisLogHandler bugfix Doing `event = json.loads(raw["data"])` wasn't correct since the `redis.lrpop()` actually returns directly the data (compared to `redis.sub()` which contained message structures. This fixes bug caused by 48c101ea5400f76cbe68ccece2f117b06cd3316d. --- diff --git a/backend/backend/daemons/log.py b/backend/backend/daemons/log.py index 557cbec..f7da72e 100644 --- a/backend/backend/daemons/log.py +++ b/backend/backend/daemons/log.py @@ -50,10 +50,9 @@ class RedisLogHandler(object): logger.addHandler(handler) self.loggers[component] = logger - def handle_msg(self, raw): + def handle_msg(self, json_event): try: - event = json.loads(raw["data"]) - + event = json.loads(json_event) who = event.get('who', None) if not who: raise Exception("No LogRecord.who field, raw: {}".format(event)) @@ -73,6 +72,7 @@ class RedisLogHandler(object): rc = helpers.get_redis_connection(self.opts) while True: - # indefinitely wait for next entry - (_, raw_message) = rc.blpop([constants.LOG_REDIS_FIFO]) - self.handle_msg(raw_message) + # indefinitely wait for the next entry, note that blpop returns + # tuple (FIFO_NAME, ELEMENT) + (_, json_event) = rc.blpop([constants.LOG_REDIS_FIFO]) + self.handle_msg(json_event)