From 3a3da81bf8dfd186144a632d9d8768d37c578b42 Mon Sep 17 00:00:00 2001
From: Moe Jette <jette1@llnl.gov>
Date: Fri, 15 Dec 2006 18:25:51 +0000
Subject: [PATCH] Add logic to deal with sleep() being interupted in accounting
 polling loop,   could result in reading data too often.

---
 src/plugins/jobacct/linux/jobacct_linux.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/plugins/jobacct/linux/jobacct_linux.c b/src/plugins/jobacct/linux/jobacct_linux.c
index 414280da2a4..ac841019157 100644
--- a/src/plugins/jobacct/linux/jobacct_linux.c
+++ b/src/plugins/jobacct/linux/jobacct_linux.c
@@ -593,11 +593,16 @@ static int _get_process_data_line(FILE *in, prec_t *prec) {
 
 static void *_watch_tasks(void *arg)
 {
+	int rem;
+
 	while(!jobacct_shutdown) {  /* Do this until shutdown is requested */
 		if(!suspended) {
 			_get_process_data();	/* Update the data */ 
 		}
-		sleep(freq);
+
+		rem = freq;
+		while (rem)		/* subject to interupt */
+			sleep(rem);
 	} 
 	return NULL;
 }
-- 
GitLab