From 86f39f7f9b8f21a5247fb05b774dcdcd465e4b6f Mon Sep 17 00:00:00 2001 From: Aurélien Bompard Date: Jan 31 2018 11:05:53 +0000 Subject: Protect against some bad messages crashing fedmsg.meta Fixes #522 --- diff --git a/hubs/feed.py b/hubs/feed.py index dcbbc01..099d00c 100644 --- a/hubs/feed.py +++ b/hubs/feed.py @@ -7,6 +7,7 @@ import re import fedmsg.meta import flask import pymongo +import requests.exceptions from fedmsg.encoding import loads, dumps from hubs.models import Hub, User, HubConfig, Association @@ -20,7 +21,11 @@ log = logging.getLogger(__name__) def get_hubs_for_msg(msg): hubs = [] # User hubs - for username in fedmsg.meta.msg2usernames(msg): + try: + usernames = fedmsg.meta.msg2usernames(msg) + except requests.exceptions.ConnectionError: + usernames = [] + for username in usernames: user = User.query.get(username) # Only act on existing users if user is None: @@ -116,6 +121,13 @@ def on_new_notification(msg): def on_new_message(msg): + try: + fedmsg.meta.conglomerate(msg) + except TypeError as e: + log.warning( + "Could not run conglomerate, the message %r may be invalid: %s", + msg["msg_id"], e) + return for hub_id in msg["_hubs"]: log.debug("Received a feed item for hub %s", hub_id) feed = Activity(hub_id)