From 8ef5e882210ba356328e114b4713f224e109afab Mon Sep 17 00:00:00 2001 From: Trevor Ackerman Date: Tue, 26 Apr 2016 15:11:42 -0600 Subject: [PATCH] Traffic Monitor always clears list of cache state updaters after fetching all stats, fixes #1316 --- .../traffic_monitor/health/CacheWatcher.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/traffic_monitor/src/main/java/com/comcast/cdn/traffic_control/traffic_monitor/health/CacheWatcher.java b/traffic_monitor/src/main/java/com/comcast/cdn/traffic_control/traffic_monitor/health/CacheWatcher.java index cf1a82bef..4c83d8d8e 100644 --- a/traffic_monitor/src/main/java/com/comcast/cdn/traffic_control/traffic_monitor/health/CacheWatcher.java +++ b/traffic_monitor/src/main/java/com/comcast/cdn/traffic_control/traffic_monitor/health/CacheWatcher.java @@ -50,8 +50,7 @@ public class CacheWatcher { private static final CacheDataModel totalMem = new CacheDataModel("Total Memory (MB)"); private static final CacheDataModel maxMemory = new CacheDataModel("Max Memory (MB)"); final MonitorConfig config = ConfigHandler.getInstance().getConfig(); - private final Map cacheUpdaterMap = new HashMap(); - + private final List cacheStateUpdaters = new ArrayList(); boolean isActive = true; private FetchService mainThread; @@ -120,14 +119,11 @@ private List checkCaches(final RouterConfig crConfig, final AtomicIn state.putDataPoint("_queryUrl_", cache.getStatisticsUrl()); state.setHistoryTime(cache.getHistoryTime()); - if (!cacheUpdaterMap.containsKey(cache.getStatisticsUrl())) { - cacheUpdaterMap.put(cache.getStatisticsUrl(), new CacheStateUpdater(state, errorCount)); - } - final long requestTimeout = System.currentTimeMillis() + myHealthDeterminer.getConnectionTimeout(cache, 2000); - final CacheStateUpdater updater = cacheUpdaterMap.get(cache.getStatisticsUrl()).update(myHealthDeterminer,failCount, requestTimeout); - cacheStatisticsClient.fetchCacheStatistics(cache, updater); + final CacheStateUpdater cacheStateUpdater = new CacheStateUpdater(state, errorCount).update(myHealthDeterminer, failCount, requestTimeout); + cacheStateUpdaters.add(cacheStateUpdater); + cacheStatisticsClient.fetchCacheStatistics(cache, cacheStateUpdater); cacheTimePad(); } @@ -179,11 +175,12 @@ public void run() { while (waitForFinish) { waitForFinish = false; - for (CacheStateUpdater updater : cacheUpdaterMap.values()) { + for (CacheStateUpdater updater : cacheStateUpdaters) { waitForFinish |= !updater.completeFetchStatistics(cancelCount); } } + cacheStateUpdaters.clear(); cacheStateRegistry.removeAllBut(states); final long completedTime = System.currentTimeMillis();