diff --git a/backend/analytics_server/mhq/service/sync_data.py b/backend/analytics_server/mhq/service/sync_data.py index 9a016d3f4..a629aeaeb 100644 --- a/backend/analytics_server/mhq/service/sync_data.py +++ b/backend/analytics_server/mhq/service/sync_data.py @@ -3,6 +3,7 @@ from mhq.service.merge_to_deploy_broker import process_merge_to_deploy_cache from mhq.service.query_validator import get_query_validator from mhq.service.workflows import sync_org_workflows +from mhq.utils.lock import get_redis_lock_service from mhq.utils.log import LOG sync_sequence = [ @@ -13,11 +14,8 @@ ] -def trigger_data_sync(): - default_org = get_query_validator().get_default_org() - org_id = str(default_org.id) +def trigger_data_sync(org_id: str): LOG.info(f"Starting data sync for org {org_id}") - for sync_func in sync_sequence: try: sync_func(org_id) @@ -31,4 +29,12 @@ def trigger_data_sync(): if __name__ == "__main__": - trigger_data_sync() + default_org = get_query_validator().get_default_org() + if not default_org: + raise Exception("Default org not found") + org_id = str(default_org.id) + with get_redis_lock_service().acquire_lock("{org}:" + f"{str(org_id)}:data_sync"): + try: + trigger_data_sync(org_id) + except Exception as e: + LOG.error(f"Error syncing data for org {org_id}: {str(e)}") diff --git a/backend/analytics_server/sync_app.py b/backend/analytics_server/sync_app.py index cc6c300a4..c67117577 100644 --- a/backend/analytics_server/sync_app.py +++ b/backend/analytics_server/sync_app.py @@ -10,8 +10,6 @@ from mhq.api.hello import app as core_api from mhq.api.sync import app as sync_api -from mhq.store.initialise_db import initialize_database - SYNC_SERVER_PORT = getenv("SYNC_SERVER_PORT") app = Flask(__name__) @@ -20,7 +18,6 @@ app.register_blueprint(sync_api) configure_db_with_app(app) -initialize_database(app) if __name__ == "__main__": app.run(port=SYNC_SERVER_PORT)