From 7845b93b4eca075dcdbb7d7fb1f2aeddbebfe0ef Mon Sep 17 00:00:00 2001
From: Danny Auble <da@schedmd.com>
Date: Mon, 26 Mar 2018 11:15:43 -0600
Subject: [PATCH] Move logic to get tres averages to the function where
 everything else is figured out.  Seemed cleaner.

---
 src/sacct/options.c | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/src/sacct/options.c b/src/sacct/options.c
index acbc53966c7..2511317ac16 100644
--- a/src/sacct/options.c
+++ b/src/sacct/options.c
@@ -554,6 +554,8 @@ extern int get_data(void)
 	ListIterator itr = NULL;
 	ListIterator itr_step = NULL;
 	slurmdb_job_cond_t *job_cond = params.job_cond;
+	int cnt;
+	char *tmp_usage;
 
 	if (params.opt_completion) {
 		jobs = slurmdb_jobcomp_jobs_get(job_cond);
@@ -581,7 +583,7 @@ extern int get_data(void)
 				job->uid = pw->pw_uid;
 		}
 
-		if (!job->steps || !list_count(job->steps))
+		if (!job->steps || !(cnt = list_count(job->steps)))
 			continue;
 
 		itr_step = list_iterator_create(job->steps);
@@ -604,6 +606,17 @@ extern int get_data(void)
 			/* get the max for all the sacct_t struct */
 			aggregate_stats(&job->stats, &step->stats);
 		}
+
+		/* Now figure out the average of the total of averages */
+		tmp_usage = job->stats.tres_usage_in_ave;
+		job->stats.tres_usage_in_ave = slurmdb_ave_tres_usage(
+			tmp_usage, cnt);
+		xfree(tmp_usage);
+		tmp_usage = job->stats.tres_usage_out_ave;
+		job->stats.tres_usage_out_ave = slurmdb_ave_tres_usage(
+			tmp_usage, cnt);
+		xfree(tmp_usage);
+
 		list_iterator_destroy(itr_step);
 	}
 	list_iterator_destroy(itr);
@@ -1319,7 +1332,6 @@ extern void do_list(void)
 	ListIterator itr_step = NULL;
 	slurmdb_job_rec_t *job = NULL;
 	slurmdb_step_rec_t *step = NULL;
-	char *ave_usage_tmp = NULL;
 	slurmdb_job_cond_t *job_cond = params.job_cond;
 
 	if (!jobs)
@@ -1332,18 +1344,6 @@ extern void do_list(void)
 		    xstrcmp(params.cluster_name, job->cluster))
 			continue;
 
-		if (list_count(job->steps)) {
-			int cnt = list_count(job->steps);
-			ave_usage_tmp = job->stats.tres_usage_in_ave;
-			job->stats.tres_usage_in_ave = slurmdb_ave_tres_usage(
-				ave_usage_tmp, cnt);
-			xfree(ave_usage_tmp);
-			ave_usage_tmp = job->stats.tres_usage_out_ave;
-			job->stats.tres_usage_out_ave = slurmdb_ave_tres_usage(
-				ave_usage_tmp, cnt);
-			xfree(ave_usage_tmp);
-		}
-
 		if (job->show_full)
 			print_fields(JOB, job);
 
-- 
GitLab