[tor-commits] [metrics-web/master] Skip lines that we don't care about.

karsten at torproject.org karsten at torproject.org
Thu Jan 7 16:37:19 UTC 2016


commit 6054dddf2c6f658a0c3ab9d7a11d404d5bb71c37
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date:   Wed Jan 6 14:19:00 2016 +0100

    Skip lines that we don't care about.
    
    The documents we're reading to memory can be huge, and in some cases
    we only care about a small portion of it.  Rather than parsing all
    lines, we can skip lines we don't care about and only parse the
    remaining lines.
---
 .../org/torproject/metrics/hidserv/DocumentStore.java    |   14 ++++++++++++++
 .../src/org/torproject/metrics/hidserv/Extrapolator.java |    3 ++-
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/modules/hidserv/src/org/torproject/metrics/hidserv/DocumentStore.java b/modules/hidserv/src/org/torproject/metrics/hidserv/DocumentStore.java
index 3266df5..e7ef0aa 100644
--- a/modules/hidserv/src/org/torproject/metrics/hidserv/DocumentStore.java
+++ b/modules/hidserv/src/org/torproject/metrics/hidserv/DocumentStore.java
@@ -97,6 +97,12 @@ public class DocumentStore<T extends Document> {
 
   /* Retrieve all previously stored documents from the given file. */
   public Set<T> retrieve(File documentFile) {
+    return this.retrieve(documentFile, "");
+  }
+
+  /* Retrieve previously stored documents from the given file that start
+   * with the given prefix. */
+  public Set<T> retrieve(File documentFile, String prefix) {
 
     /* Check if the document file exists, and if not, return an empty set.
      * This is not an error case. */
@@ -120,6 +126,14 @@ public class DocumentStore<T extends Document> {
               + "documents.%n", documentFile.getAbsolutePath());
           lnr.close();
           return null;
+        } else if (prefix.length() > formattedString0.length() &&
+            !(formattedString0 + line.substring(1)).startsWith(prefix)) {
+          /* Skip combined line not starting with prefix. */
+          continue;
+        } else if (prefix.length() > 0 &&
+            !formattedString0.startsWith(prefix)) {
+          /* Skip line not starting with prefix. */
+          continue;
         } else {
           T document = this.clazz.newInstance();
           if (!document.parse(new String[] { formattedString0,
diff --git a/modules/hidserv/src/org/torproject/metrics/hidserv/Extrapolator.java b/modules/hidserv/src/org/torproject/metrics/hidserv/Extrapolator.java
index a1ff075..e926154 100644
--- a/modules/hidserv/src/org/torproject/metrics/hidserv/Extrapolator.java
+++ b/modules/hidserv/src/org/torproject/metrics/hidserv/Extrapolator.java
@@ -153,7 +153,8 @@ public class Extrapolator {
         File documentFile = new File(
             this.computedNetworkFractionsDirectory, date);
         Set<ComputedNetworkFractions> fractions
-            = this.computedNetworkFractionsStore.retrieve(documentFile);
+            = this.computedNetworkFractionsStore.retrieve(documentFile,
+            fingerprint);
         for (ComputedNetworkFractions fraction : fractions) {
           knownConsensuses.add(fraction.getValidAfterMillis());
           if (fraction.getFingerprint().equals(fingerprint)) {





More information about the tor-commits mailing list