From e5bdc30d0e6650d52828a0fb78e8dc92000492d0 Mon Sep 17 00:00:00 2001 From: Isaac Milarsky Date: Tue, 17 Feb 2026 18:52:01 -0600 Subject: [PATCH] add config option and method to auto clear the unresolved commit emails Signed-off-by: Isaac Milarsky --- augur/application/config.py | 1 + augur/application/db/lib.py | 4 ++++ .../tasks/git/util/facade_worker/facade_worker/config.py | 1 + augur/tasks/init/celery_app.py | 5 ++++- augur/tasks/start_tasks.py | 8 +++++++- 5 files changed, 17 insertions(+), 2 deletions(-) diff --git a/augur/application/config.py b/augur/application/config.py index 058688dc80..a39b6d09bb 100644 --- a/augur/application/config.py +++ b/augur/application/config.py @@ -57,6 +57,7 @@ def redact_setting_value(section_name, setting_name, value): "run_facade_contributors": 1, "facade_contributor_full_recollect": 0, "commit_messages": 1, + "unresolved_commit_emails_refresh_interval_hours": 48, }, "Server": { "cache_expire": "3600", diff --git a/augur/application/db/lib.py b/augur/application/db/lib.py index f1c27f92e1..d9e505b081 100644 --- a/augur/application/db/lib.py +++ b/augur/application/db/lib.py @@ -517,6 +517,10 @@ def get_contributor_aliases_by_email(email): with get_session() as session: return session.query(ContributorsAlias).filter_by(alias_email=email).all() + +def clear_unresolved_commit_emails_table(): + remove_commit = s.sql.text("""DELETE FROM unresolved_commit_emails""") + execute_sql(remove_commit) def get_unresolved_commit_emails_by_name(name): diff --git a/augur/tasks/git/util/facade_worker/facade_worker/config.py b/augur/tasks/git/util/facade_worker/facade_worker/config.py index a83d09390c..cd7f9c21df 100644 --- a/augur/tasks/git/util/facade_worker/facade_worker/config.py +++ b/augur/tasks/git/util/facade_worker/facade_worker/config.py @@ -133,6 +133,7 @@ def __init__(self,logger: Logger): self.create_xlsx_summary_files = worker_options["create_xlsx_summary_files"] self.facade_contributor_full_recollect = worker_options["facade_contributor_full_recollect"] self.commit_messages = worker_options["commit_messages"] + self.unresolved_commit_emails_refresh_interval_hours = worker_options["unresolved_commit_emails_refresh_interval_hours"] self.tool_source = "Facade" self.data_source = "Git Log" diff --git a/augur/tasks/init/celery_app.py b/augur/tasks/init/celery_app.py index d1209fadd0..2f8ffe18b6 100644 --- a/augur/tasks/init/celery_app.py +++ b/augur/tasks/init/celery_app.py @@ -219,7 +219,7 @@ def setup_periodic_tasks(sender, **kwargs): """ from celery.schedules import crontab from augur.tasks.start_tasks import augur_collection_monitor - from augur.tasks.start_tasks import non_repo_domain_tasks, retry_errored_repos, create_collection_status_records + from augur.tasks.start_tasks import non_repo_domain_tasks, retry_errored_repos, create_collection_status_records, clear_all_unresolved_commit_emails from augur.tasks.git.facade_tasks import clone_repos from augur.tasks.github.contributors import process_contributors from augur.tasks.db.refresh_materialized_views import refresh_materialized_views @@ -249,6 +249,9 @@ def setup_periodic_tasks(sender, **kwargs): # logger.info(f"Scheduling update of collection weights on midnight each day") # sender.add_periodic_task(crontab(hour=0, minute=0),augur_collection_update_weights.s()) + clear_unres_emails_interval = config.get_value('Facade', 'unresolved_commit_emails_refresh_interval_hours') or 24 + logger.info(f"Setting unresolved commit emails to automatically be cleared every {clear_unres_emails_interval} hours") + sender.add_periodic_task(clear_unres_emails_interval*60*60, clear_all_unresolved_commit_emails.s()) logger.info(f"Setting 404 repos to be marked for retry on midnight each day") sender.add_periodic_task(crontab(hour=0, minute=0),retry_errored_repos.s()) diff --git a/augur/tasks/start_tasks.py b/augur/tasks/start_tasks.py index 8387e6746c..e60fcfe233 100644 --- a/augur/tasks/start_tasks.py +++ b/augur/tasks/start_tasks.py @@ -29,7 +29,7 @@ from augur.tasks.util.collection_state import CollectionState from augur.tasks.util.collection_util import * from augur.tasks.git.util.facade_worker.facade_worker.utilitymethods import get_facade_weight_time_factor -from augur.application.db.lib import execute_sql, get_session +from augur.application.db.lib import execute_sql, get_session, clear_unresolved_commit_emails_table from augur.application.config import AugurConfig RUNNING_DOCKER = os.environ.get('AUGUR_DOCKER_DEPLOY') == "1" @@ -390,3 +390,9 @@ def create_collection_status_records(self): # no longer recursively run this task because collection status records are added when repos are inserted #create_collection_status_records.si().apply_async(countdown=60*7) + + +#Automatically re-try to resolve unresolved emails after a set amount of time +@celery.task(bind=True) +def clear_all_unresolved_commit_emails(self): + clear_unresolved_commit_emails_table() \ No newline at end of file