diff --git a/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java b/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java index 93bebfc9e..02c9947ac 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java @@ -1,6 +1,7 @@ package net.i2p.router.web; import java.io.File; +import java.io.FileFilter; import java.io.IOException; import java.io.OutputStream; import java.util.Collections; @@ -22,6 +23,7 @@ import net.i2p.router.RouterContext; import static net.i2p.router.web.GraphConstants.*; import net.i2p.stat.Rate; import net.i2p.stat.RateStat; +import net.i2p.util.FileSuffixFilter; import net.i2p.util.FileUtil; import net.i2p.util.Log; import net.i2p.util.SystemVersion; @@ -91,6 +93,24 @@ public class StatSummarizer implements Runnable, ClientApp { String spec = _context.getProperty("stat.summaries", DEFAULT_DATABASES); String[] rates = DataHelper.split(spec, ","); syncThreads = Math.min(rates.length / 2, 4); + // delete files for unconfigured rates + Set configured = new HashSet(rates.length); + for (String r : rates) { + configured.add(SummaryListener.createName(_context, r)); + } + File rrdDir = new File(_context.getRouterDir(), SummaryListener.RRD_DIR); + FileFilter filter = new FileSuffixFilter(SummaryListener.RRD_PREFIX, SummaryListener.RRD_SUFFIX); + File[] files = rrdDir.listFiles(filter); + if (files != null) { + for (int i = 0; i < files.length; i++) { + File f = files[i]; + String name = f.getName(); + String hash = name.substring(SummaryListener.RRD_PREFIX.length(), name.length() - SummaryListener.RRD_SUFFIX.length()); + if (!configured.contains(hash)) { + f.delete(); + } + } + } } else { syncThreads = 0; deleteOldRRDs(); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryListener.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryListener.java index 183b2b42c..3b6d97843 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryListener.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryListener.java @@ -35,8 +35,8 @@ public class SummaryListener implements RateSummaryListener { public static final String PROP_PERSISTENT = "routerconsole.graphPersistent"; /** note that .jrb files are NOT compatible with .rrd files */ static final String RRD_DIR = "rrd"; - private static final String RRD_PREFIX = "rrd-"; - private static final String RRD_SUFFIX = ".jrb"; + static final String RRD_PREFIX = "rrd-"; + static final String RRD_SUFFIX = ".jrb"; static final ConsolFun CF = ConsolFun.AVERAGE; static final DsType DS = DsType.GAUGE; private static final double XFF = 0.9d;