This is an automated email from the ASF dual-hosted git repository.

zrhoffman pushed a commit to branch 6.0.x
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git

commit c89911f7ff59be3c132d128687b3f696f4e33f73
Author: mattjackson220 <[email protected]>
AuthorDate: Wed Sep 15 10:18:56 2021 -0600

    Fixed crs/stats fields to report time correctly and not overflow and … 
(#6211)
    
    * Fixed crs/stats fields to report time correctly and not overflow and 
removed unused fields from TO
    
    * fixed spaces
    
    (cherry picked from commit 296051a1fa8ae36d3f38bd08e2dde929dd80a361)
---
 CHANGELOG.md                                       |  1 +
 lib/go-tc/crsstats.go                              | 36 ++--------------------
 .../traffic_router/core/router/StatTracker.java    | 21 ++++++++++++-
 3 files changed, 23 insertions(+), 35 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1e6e20f..0e01602 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -105,6 +105,7 @@ The format is based on [Keep a 
Changelog](http://keepachangelog.com/en/1.0.0/).
 - [#6174](https://github.com/apache/trafficcontrol/issues/6174) - Fixed 
t3c-apply with no hostname failing if the OS hostname returns a full FQDN
 - Fixed Federations IMS so TR federations watcher will get updates.
 - [#5129](https://github.com/apache/trafficcontrol/issues/5129) - Updated TM 
so that it returns a 404 if the endpoint is not supported.
+- Fixed Traffic Router crs/stats to prevent overflow and to correctly record 
the time used in averages.
 
 ### Changed
 - Migrated completely off of bower in favor of npm
diff --git a/lib/go-tc/crsstats.go b/lib/go-tc/crsstats.go
index 11e56d9..945b66c 100644
--- a/lib/go-tc/crsstats.go
+++ b/lib/go-tc/crsstats.go
@@ -36,15 +36,8 @@ type CRSStatsApp struct {
 
 // CRSStatsStats represents stats about a given TR.
 type CRSStatsStats struct {
-       DNSMap           map[string]CRSStatsStat
-       HTTPMap          map[string]CRSStatsStat
-       TotalDNSCount    uint64                `json:"totalDnsCount"`
-       TotalHTTPCount   uint64                `json:"totalHttpCount"`
-       TotalDSMissCount uint64                `json:"totalDsMissCount"`
-       AppStartTime     uint64                `json:"appStartTime"`
-       AverageDnsTime   uint64                `json:"averageDnsTime"`
-       AverageHttpTime  uint64                `json:"averageHttpTime"`
-       UpdateTracker    CRSStatsUpdateTracker `json:"updateTracker"`
+       DNSMap  map[string]CRSStatsStat
+       HTTPMap map[string]CRSStatsStat
 }
 
 // CRSStatsStat represents an individual stat.
@@ -61,31 +54,6 @@ type CRSStatsStat struct {
        RegionalAlternateCount uint64 `json:"regionalAlternateCount"`
 }
 
-// CRSStatsUpdateTracker is a collection of miscellaneous statistics about a
-// Traffic Router instance.
-//
-// This is named with "CRS" because of legacy naming conventions for Traffic
-// Router.
-type CRSStatsUpdateTracker struct {
-       LastHttpsCertificatesCheck           uint64 
`json:"lastHttpsCertificatesCheck"`
-       LastGeolocationDatabaseUpdaterUpdate uint64 
`json:"lastGeolocationDatabaseUpdaterUpdate"`
-       LastCacheStateCheck                  uint64 `json:"lastCacheStateCheck"`
-       LastCacheStateChange                 uint64 
`json:"lastCacheStateChange"`
-       LastNetworkUpdaterUpdate             uint64 
`json:"lastNetworkUpdaterUpdate"`
-       LastHTTPSCertificatesUpdate          uint64 
`json:"lastHttpsCertificatesUpdate"`
-       LastConfigCheck                      uint64 `json:"lastConfigCheck"`
-       LastConfigChange                     uint64 `json:"lastConfigChange"`
-       LastHTTPSCertificatesFetchFail       uint64 
`json:"lastHttpsCertificatesFetchFail"`
-       LastNetworkUpdaterCheck              uint64 
`json:"lastNetworkUpdaterCheck"`
-       NewDNSSECKeysFound                   uint64 `json:"newDnsSecKeysFound"`
-       LastGeolocationDatabaseUpdaterCheck  uint64 
`json:"lastGeolocationDatabaseUpdaterCheck"`
-       LastHTTPSCertificatesFetchSuccess    uint64 
`json:"lastHttpsCertificatesFetchSuccess"`
-       LastSteeringWatcherCheck             uint64 
`json:"lastSteeringWatcherCheck"`
-       LastDNSSECKeysCheck                  uint64 `json:"lastDnsSecKeysCheck"`
-       LastFederationsWatcherCheck          uint64 
`json:"lastFederationsWatcherCheck"`
-       LastHTTPSCertificatesFetchAttempt    uint64 
`json:"lastHttpsCertificatesFetchAttempt"`
-}
-
 // Routing represents the aggregated routing percentages across CDNs or for a 
DS.
 type Routing struct {
        StaticRoute       float64 `json:"staticRoute"`
diff --git 
a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/router/StatTracker.java
 
b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/router/StatTracker.java
index b926a76..d93f62a 100644
--- 
a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/router/StatTracker.java
+++ 
b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/router/StatTracker.java
@@ -368,6 +368,11 @@ public class StatTracker {
                        if (t.routeType == RouteType.DNS) {
                                totalDnsCount++;
                                totalDnsTime += t.time;
+                               if (totalDnsTime < 0 || totalDnsCount < 0) {
+                                       this.resetDnsStatsFromOverflow();
+                                       totalDnsCount++;
+                                       totalDnsTime += t.time;
+                               }
                                map = dnsMap;
 
                                if (t.resultDetails == 
Track.ResultDetails.LOCALIZED_DNS) {
@@ -377,6 +382,11 @@ public class StatTracker {
                        } else {
                                totalHttpCount++;
                                totalHttpTime += t.time;
+                               if (totalHttpTime < 0 || totalHttpCount < 0) {
+                                       this.resetHttpStatsFromOverflow();
+                                       totalHttpCount++;
+                                       totalHttpTime += t.time;
+                               }
                                map = httpMap;
                        }
                        map.putIfAbsent(fqdn, new Tallies());
@@ -452,11 +462,20 @@ public class StatTracker {
 
                                        t.setRouteType(rt, dsName.toString());
                                        t.setResult(ResultType.INIT);
-                                       t.end();
 
                                        saveTrack(t);
                                }
                        }
                }
        }
+
+       private void resetHttpStatsFromOverflow() {
+               totalHttpCount = 0;
+               totalHttpTime = 0;
+       }
+
+       private void resetDnsStatsFromOverflow() {
+               totalDnsCount = 0;
+               totalDnsTime = 0;
+       }
 }

Reply via email to