diff --git a/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c b/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c index aedb859383900d6beb81541c645894715ed671fa..1392b9c5b1cea24fa3d52e7aeaa3863aa6da58d8 100644 --- a/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c +++ b/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c @@ -2859,10 +2859,17 @@ extern List jobacct_storage_p_get_jobs_cond(mysql_conn_t *mysql_conn, extern int jobacct_storage_p_archive(mysql_conn_t *mysql_conn, slurmdb_archive_cond_t *arch_cond) { + int rc; + if (check_connection(mysql_conn) != SLURM_SUCCESS) return ESLURM_DB_CONNECTION; - return as_mysql_jobacct_process_archive(mysql_conn, arch_cond); + /* Make sure only 1 archive is happening at a time. */ + slurm_mutex_lock(&usage_rollup_lock); + rc = as_mysql_jobacct_process_archive(mysql_conn, arch_cond); + slurm_mutex_unlock(&usage_rollup_lock); + + return rc; } /*