[tor-commits] [onionoo/release] Also include somewhat redundant graph histories.

karsten at torproject.org karsten at torproject.org
Thu Feb 20 14:26:58 UTC 2020


commit 59085fc5ad183bf7671e2bef5e066f737e8625b3
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date:   Sun Jan 19 11:13:19 2020 +0100

    Also include somewhat redundant graph histories.
    
    Fixes #28871.
---
 CHANGELOG.md                                       |  7 ++++++-
 .../onionoo/writer/GraphHistoryCompiler.java       | 23 ++++++++++++----------
 2 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index fce8f43..c4f9c30 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,9 @@
-# Changes in version 7.?-1.??-? - 2020-??-??
+# Changes in version 8.0-1.2?.? - 20??-??-??
+
+ * Major changes
+   - Include graph history objects even if the time period they cover
+     are already contained in other graph history objects with shorter
+     time periods and higher data resolutions.
 
 
 # Changes in version 7.1-1.24.1 - 2020-02-14
diff --git a/src/main/java/org/torproject/metrics/onionoo/writer/GraphHistoryCompiler.java b/src/main/java/org/torproject/metrics/onionoo/writer/GraphHistoryCompiler.java
index ae5231f..a9227bb 100644
--- a/src/main/java/org/torproject/metrics/onionoo/writer/GraphHistoryCompiler.java
+++ b/src/main/java/org/torproject/metrics/onionoo/writer/GraphHistoryCompiler.java
@@ -125,11 +125,18 @@ public class GraphHistoryCompiler {
 
       /* Iterate over all history entries and see which ones we need for this
        * graph. */
+      boolean compileNextGraph = false;
       for (Map.Entry<long[], Double> h : this.history.entrySet()) {
         long startMillis = h.getKey()[0];
         long endMillis = h.getKey()[1];
         double value = h.getValue();
 
+        /* If the history entry starts before this graph starts, remember that
+         * we'll have to compile the next graph. */
+        if (startMillis <= graphStartMillis) {
+          compileNextGraph = true;
+        }
+
         /* If a history entry ends before this graph starts or starts before
          * this graph ends, skip it. */
         if (endMillis <= graphStartMillis || startMillis >= graphEndMillis) {
@@ -211,16 +218,6 @@ public class GraphHistoryCompiler {
       long firstDataPointMillis = graphStartMillis + firstNonNullIndex
           * dataPointInterval + dataPointInterval / 2L;
 
-      /* If the graph doesn't contain anything new that wasn't already contained
-       * in previously compiled graphs, skip this graph. */
-      if (graphIntervalIndex > 0 && !graphs.isEmpty()
-          && firstDataPointMillis >= LocalDateTime.ofEpochSecond(
-          graphEndMillis / 1000L, 0, ZoneOffset.UTC)
-          .minus(this.graphIntervals.get(graphIntervalIndex - 1))
-          .toEpochSecond(ZoneOffset.UTC) * 1000L) {
-        continue;
-      }
-
       /* Put together the list of values that will go into the graph. */
       List<Integer> values = new ArrayList<>();
       for (int dataPointIndex = firstNonNullIndex;
@@ -245,6 +242,12 @@ public class GraphHistoryCompiler {
       graphHistory.setCount(lastNonNullIndex - firstNonNullIndex + 1);
       graphHistory.setValues(values);
       graphs.put(graphName, graphHistory);
+
+      /* If all history entries ended after this graph started, stop compiling
+       * more graphs for this history. */
+      if (!compileNextGraph) {
+        break;
+      }
     }
 
     /* We're done. Return the map of compiled graphs. */





More information about the tor-commits mailing list