From 54752baf1a668abfb311ec1463998cf84894d060 Mon Sep 17 00:00:00 2001
From: Danny Auble <da@llnl.gov>
Date: Thu, 6 Aug 2009 20:23:00 +0000
Subject: [PATCH] added END_TIMER3 to give a limit with end_time

---
 src/common/timers.c                               | 15 +++++++++++----
 src/common/timers.h                               | 11 ++++++++---
 .../mysql/accounting_storage_mysql.c              |  2 +-
 3 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/src/common/timers.c b/src/common/timers.c
index 5cc6ca1bd1e..d16cbacc568 100644
--- a/src/common/timers.c
+++ b/src/common/timers.c
@@ -49,15 +49,22 @@
  * IN from - where the function was called form
  */
 inline void diff_tv_str(struct timeval *tv1,struct timeval *tv2, 
-		char *tv_str, int len_tv_str, char *from)
+			char *tv_str, int len_tv_str, char *from,
+			long limit)
 {
 	long delta_t;
+
 	delta_t  = (tv2->tv_sec  - tv1->tv_sec) * 1000000;
 	delta_t +=  tv2->tv_usec - tv1->tv_usec;
 	snprintf(tv_str, len_tv_str, "usec=%ld", delta_t);
-	if ((delta_t > 1000000) && from) {
-		verbose("Warning: Note very large processing time from %s: %s",
-			from, tv_str);
+	if(from) {
+		if(!limit)
+			limit = 1000000;
+		if(delta_t > limit) {
+			verbose("Warning: Note very large processing "
+				"time from %s: %s",
+				from, tv_str);
+		}
 	}
 }
 
diff --git a/src/common/timers.h b/src/common/timers.h
index 6cc38daf46a..e7fb6cc9162 100644
--- a/src/common/timers.h
+++ b/src/common/timers.h
@@ -44,9 +44,11 @@
 #define DEF_TIMERS	struct timeval tv1, tv2; char tv_str[20]
 #define START_TIMER	gettimeofday(&tv1, NULL)
 #define END_TIMER	gettimeofday(&tv2, NULL); \
-			diff_tv_str(&tv1, &tv2, tv_str, 20, NULL)
+                	diff_tv_str(&tv1, &tv2, tv_str, 20, NULL, 0)
 #define END_TIMER2(from) gettimeofday(&tv2, NULL); \
-			diff_tv_str(&tv1, &tv2, tv_str, 20, from)
+	                 diff_tv_str(&tv1, &tv2, tv_str, 20, from, 0)
+#define END_TIMER3(from, limit) gettimeofday(&tv2, NULL); \
+	                        diff_tv_str(&tv1, &tv2, tv_str, 20, from, limit)
 #define DELTA_TIMER	diff_tv(&tv1, &tv2)
 #define TIME_STR 	tv_str
 
@@ -56,9 +58,12 @@
  * IN tv2 - end of event
  * OUT tv_str - place to put delta time in format "usec=%ld"
  * IN len_tv_str - size of tv_str in bytes
+ * IN from - Name to be printed on long diffs
+ * IN limit - limit to wait 
  */
 extern inline void diff_tv_str(struct timeval *tv1,struct timeval *tv2,
-                char *tv_str, int len_tv_str, char *from);
+			       char *tv_str, int len_tv_str, char *from,
+			       long limit);
 
 /*
  * diff_tv - return the difference between two times
diff --git a/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c b/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c
index 8a165ce5ec1..ba8158cec81 100644
--- a/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c
+++ b/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c
@@ -9964,7 +9964,7 @@ extern int acct_storage_p_roll_usage(mysql_conn_t *mysql_conn,
 		if((rc = mysql_hourly_rollup(mysql_conn, start_time, end_time)) 
 		   != SLURM_SUCCESS)
 			return rc;
-		END_TIMER2("hourly_rollup");
+		END_TIMER3("hourly_rollup", 5000000);
 		/* If we have a sent_end do not update the last_run_table */
 		if(!sent_end)
 			query = xstrdup_printf("update %s set hourly_rollup=%d",
-- 
GitLab