From 784d17c9c3818f9afa2dd5d69bb5ded1a589d38b Mon Sep 17 00:00:00 2001 From: Moe Jette <jette1@llnl.gov> Date: Wed, 20 Jul 2005 21:36:35 +0000 Subject: [PATCH] Fix accounting bug (Andy Riebs, HP). --- NEWS | 5 +++++ src/plugins/jobacct/log/jobacct_log.c | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/NEWS b/NEWS index 9008e33f350..6b070e6c1cc 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,11 @@ This file describes changes in recent versions of SLURM. It primarily documents those changes that are of interest to users and admins. +* Changes in SLURM 0.5.0-pre20 +============================== + -- Fix race condition in job accouting plugin, could hang slurmd + -- Report SlurmUser id over 16 bits as an error (fix on v0.6) + * Changes in SLURM 0.5.0-pre19 ============================== -- Fix memory management bug in federation driver diff --git a/src/plugins/jobacct/log/jobacct_log.c b/src/plugins/jobacct/log/jobacct_log.c index 6d8e2f9839a..ef8cb2ba05d 100644 --- a/src/plugins/jobacct/log/jobacct_log.c +++ b/src/plugins/jobacct/log/jobacct_log.c @@ -738,6 +738,7 @@ int slurmd_jobacct_task_exit(slurmd_job_t *job, pid_t pid, int status, struct ru if (prec_frequency) { /* if dynamic monitoring */ slurm_mutex_lock(&precTable_lock); /* let watcher finish loop */ pthread_cancel(_watch_tasks_thread_id); + pthread_join(_watch_tasks_thread_id,NULL); slurm_mutex_unlock(&precTable_lock); jrec->max_psize = max_psize; jrec->max_vsize = max_vsize; @@ -1585,10 +1586,15 @@ static int _unpack_jobrec(_jrec_t *outrec, _jrec_t *inrec) { static void *_watch_tasks(void *arg) { + int tmp; + while(1) { /* Do this until slurm_jobacct_task_exit() stops us */ sleep(prec_frequency); + pthread_testcancel(); slurm_mutex_lock(&precTable_lock); + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &tmp); _get_process_data(); /* Update the data */ slurm_mutex_unlock(&precTable_lock); + pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &tmp); } } -- GitLab