From 2c621678108cca685fae94270f80483cc4bbc776 Mon Sep 17 00:00:00 2001 From: Mattia Verga Date: Feb 18 2025 16:57:24 +0000 Subject: Make pagure check more resilient to errors Signed-off-by: Mattia Verga --- diff --git a/find_inactive_packagers.py b/find_inactive_packagers.py index 00c521a..39a70a2 100644 --- a/find_inactive_packagers.py +++ b/find_inactive_packagers.py @@ -248,13 +248,17 @@ def _check_pagure_activity(user, base_url='https://src.fedoraproject.org'): if not user: log.error('ERROR: Cannot check an empty username!') return False - resp_src = session.get(f'{base_url}/api/0/user/{user}/activity/stats').json() - if resp_src.get('error', None) is not None: - if resp_src.get('error_code', None) == 'ENOUSER': + resp_src = session.get(f'{base_url}/api/0/user/{user}/activity/stats') + try: + resp_json = resp_src.json() + except Exception: + raise ValueError(f'Received bad JSON data for user {user}') + if resp_json.get('error', None) is not None: + if resp_json.get('error_code', None) == 'ENOUSER': raise AttributeError(f'User {user} not found in {base_url}') log.info(f'Error checking user {user} in {base_url}: {error}') return False - if not bool(resp_src): + if not bool(resp_json): log.info(f'No activity detected for user {user} in {base_url}') return False log.info(f'User {user} was active in {base_url}') @@ -416,11 +420,17 @@ def _check_user_activity(user, privacy=False, fasclient=None, bzclient=None): except AttributeError as ex: log.info(f'{ex}') src_fpo = False + except ValueError as ex: + log.info(f'{ex}') + src_fpo = False try: pagure = _check_pagure_activity(user, base_url='https://pagure.io') except AttributeError as ex: log.info(f'{ex}') pagure = False + except ValueError as ex: + log.info(f'{ex}') + pagure = False if src_fpo or pagure: return True log.info(f'Checking {user} activity in Fedora Discussion...') @@ -598,6 +608,9 @@ def step_one(ctx, with_bz_check, open_tickets): except AttributeError as ex: log.info(f'{ex}') src_fpo = False + except ValueError as ex: + log.info(f'{ex}') + src_fpo = False if not src_fpo: try: pagure = _check_pagure_activity(user, base_url='https://pagure.io') @@ -605,6 +618,10 @@ def step_one(ctx, with_bz_check, open_tickets): log.info(f'{ex}') pagure = False nouser_in_pagureio.append(user) + except ValueError as ex: + log.info(f'{ex}') + pagure = False + nouser_in_pagureio.append(user) if not src_fpo and not pagure: inactive_packagers.append(user)