From 00f091d188da167bdf6dc0f96226e0e94d620c13 Mon Sep 17 00:00:00 2001
From: Nigel Kukard <nkukard@lbsd.net>
Date: Mon, 13 Jan 2014 14:43:59 +0000
Subject: [PATCH] Consolidate only the previous period

We cannot have an open ended consolidation window or we will consolidate
all history each time we run.
---
 opentrafficshaper/plugins/statistics/statistics.pm | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/opentrafficshaper/plugins/statistics/statistics.pm b/opentrafficshaper/plugins/statistics/statistics.pm
index 371f6d0..444511d 100644
--- a/opentrafficshaper/plugins/statistics/statistics.pm
+++ b/opentrafficshaper/plugins/statistics/statistics.pm
@@ -227,6 +227,7 @@ sub plugin_init
 				stats
 			WHERE
 				`Key` = ?
+				AND `Timestamp` > ?
 				AND `Timestamp` < ?
 			GROUP BY
 				`IdentifierID`, `TimestampM`, `Direction`
@@ -245,6 +246,7 @@ sub plugin_init
 				stats_basic
 			WHERE
 				`Key` = ?
+				AND `Timestamp` > ?
 				AND `Timestamp` < ?
 			GROUP BY
 				`IdentifierID`, `TimestampM`
@@ -454,10 +456,11 @@ sub _session_tick
 		my $numStatsBasicConsolidated = 0;
 		my $numStatsConsolidated = 0;
 
+		my $consolidateFrom = $lastPeriod - $precision * 2;
 		my $consolidateUpTo = $lastPeriod - $precision;
 
 		# Execute and pull in consolidated stats
-		$res = $sthStatsBasicConsolidate->execute($precision,$prevKey,$consolidateUpTo);
+		$res = $sthStatsBasicConsolidate->execute($precision,$prevKey,$consolidateFrom,$consolidateUpTo);
 		if ($res) {
 			# Loop with items returned
 			while (my $item = $sthStatsBasicConsolidate->fetchrow_hashref()) {
@@ -476,7 +479,7 @@ sub _session_tick
 			);
 		}
 		# And the normal stats...
-		$res = $sthStatsConsolidate->execute($precision,$prevKey,$consolidateUpTo);
+		$res = $sthStatsConsolidate->execute($precision,$prevKey,$consolidateFrom,$consolidateUpTo);
 		if ($res) {
 			# Loop with items returned
 			while (my $item = $sthStatsConsolidate->fetchrow_hashref()) {
@@ -501,12 +504,14 @@ sub _session_tick
 		my $timerB = [gettimeofday];
 		my $timediffB = tv_interval($timerA,$timerB);
 
-		$logger->log(LOG_INFO,"[STATISTICS] Stats consolidation time for key %s: %s (%s basic, %s normal), up to %s [%s]",
+		$logger->log(LOG_INFO,"[STATISTICS] Stats consolidation: key %s in %s (%s basic, %s normal), period %s - %s [%s - %s]",
 				$key,
 				sprintf('%.3fs',$timediffB),
 				$numStatsBasicConsolidated,
 				$numStatsConsolidated,
+				$consolidateFrom,
 				$consolidateUpTo,
+				scalar(localtime($consolidateFrom)),
 				scalar(localtime($consolidateUpTo))
 		);
 	}
-- 
GitLab