[tor-commits] [metrics-lib/master] Clear sets used to validate at-most-once/exactly-once keywords.

karsten at torproject.org karsten at torproject.org
Wed Jun 18 15:07:27 UTC 2014


commit f3a170fb74e753d71d6c2513f4c09fc789286ad4
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date:   Tue Jun 17 20:32:55 2014 +0200

    Clear sets used to validate at-most-once/exactly-once keywords.
    
    Related to 5caa384.  Similarly, keeping these sets around just wastes heap
    space.
---
 src/org/torproject/descriptor/impl/DirSourceEntryImpl.java     |    6 ++++--
 src/org/torproject/descriptor/impl/ExitListEntryImpl.java      |    5 +++--
 src/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java |    5 +++++
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/org/torproject/descriptor/impl/DirSourceEntryImpl.java b/src/org/torproject/descriptor/impl/DirSourceEntryImpl.java
index bd97948..0156790 100644
--- a/src/org/torproject/descriptor/impl/DirSourceEntryImpl.java
+++ b/src/org/torproject/descriptor/impl/DirSourceEntryImpl.java
@@ -33,7 +33,7 @@ public class DirSourceEntryImpl implements DirSourceEntry {
         failUnrecognizedDescriptorLines;
     this.initializeKeywords();
     this.parseDirSourceEntryBytes();
-    this.checkKeywords();
+    this.checkAndClearKeywords();
   }
 
   private SortedSet<String> exactlyOnceKeywords, atMostOnceKeywords;
@@ -63,11 +63,13 @@ public class DirSourceEntryImpl implements DirSourceEntry {
     this.atMostOnceKeywords.remove(keyword);
   }
 
-  private void checkKeywords() throws DescriptorParseException {
+  private void checkAndClearKeywords() throws DescriptorParseException {
     if (!this.exactlyOnceKeywords.isEmpty()) {
       throw new DescriptorParseException("dir-source does not contain a '"
           + this.exactlyOnceKeywords.first() + "' line.");
     }
+    this.exactlyOnceKeywords = null;
+    this.atMostOnceKeywords = null;
   }
 
   private void parseDirSourceEntryBytes()
diff --git a/src/org/torproject/descriptor/impl/ExitListEntryImpl.java b/src/org/torproject/descriptor/impl/ExitListEntryImpl.java
index 958fd68..fc7d286 100644
--- a/src/org/torproject/descriptor/impl/ExitListEntryImpl.java
+++ b/src/org/torproject/descriptor/impl/ExitListEntryImpl.java
@@ -33,7 +33,7 @@ public class ExitListEntryImpl implements ExitListEntry {
         failUnrecognizedDescriptorLines;
     this.initializeKeywords();
     this.parseExitListEntryBytes();
-    this.checkKeywords();
+    this.checkAndClearKeywords();
   }
 
   private SortedSet<String> exactlyOnceKeywords;
@@ -54,11 +54,12 @@ public class ExitListEntryImpl implements ExitListEntry {
     this.exactlyOnceKeywords.remove(keyword);
   }
 
-  private void checkKeywords() throws DescriptorParseException {
+  private void checkAndClearKeywords() throws DescriptorParseException {
     for (String missingKeyword : this.exactlyOnceKeywords) {
       throw new DescriptorParseException("Missing '" + missingKeyword
           + "' line in exit list entry.");
     }
+    this.exactlyOnceKeywords = null;
   }
 
   private void parseExitListEntryBytes()
diff --git a/src/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java b/src/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java
index 3962009..d8aa5f0 100644
--- a/src/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java
+++ b/src/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java
@@ -39,6 +39,7 @@ public class NetworkStatusEntryImpl implements NetworkStatusEntry {
         failUnrecognizedDescriptorLines;
     this.initializeKeywords();
     this.parseStatusEntryBytes();
+    this.clearAtMostOnceKeywords();
   }
 
   private SortedSet<String> atMostOnceKeywords;
@@ -218,6 +219,10 @@ public class NetworkStatusEntryImpl implements NetworkStatusEntry {
     }
   }
 
+  private void clearAtMostOnceKeywords() {
+    this.atMostOnceKeywords = null;
+  }
+
   private String nickname;
   public String getNickname() {
     return this.nickname;





More information about the tor-commits mailing list