[tor-commits] [onionoo/master] Simplify weights status updater by taking out threading code.

karsten at torproject.org karsten at torproject.org
Fri Apr 11 07:38:01 UTC 2014


commit 97fbdee60d66a627fa9b378fc20767864bf275cc
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date:   Fri Mar 14 12:10:39 2014 +0100

    Simplify weights status updater by taking out threading code.
    
    The threading code was never used, because it's broken.  No reason to keep
    it.
---
 .../torproject/onionoo/WeightsStatusUpdater.java   |   69 +++++---------------
 1 file changed, 15 insertions(+), 54 deletions(-)

diff --git a/src/org/torproject/onionoo/WeightsStatusUpdater.java b/src/org/torproject/onionoo/WeightsStatusUpdater.java
index 5e890ef..79296d3 100644
--- a/src/org/torproject/onionoo/WeightsStatusUpdater.java
+++ b/src/org/torproject/onionoo/WeightsStatusUpdater.java
@@ -3,11 +3,9 @@
 package org.torproject.onionoo;
 
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.SortedMap;
@@ -66,6 +64,7 @@ public class WeightsStatusUpdater implements DescriptorListener,
 
   private void processRelayNetworkConsensus(
       RelayNetworkStatusConsensus consensus) {
+    // TODO This does not scale for bulk imports.
     this.consensuses.add(consensus);
   }
 
@@ -107,62 +106,24 @@ public class WeightsStatusUpdater implements DescriptorListener,
     }
   }
 
-  // TODO Use 4 workers once threading problems are solved.
-  private static final int HISTORY_UPDATER_WORKERS_NUM = 1;
   private void updateWeightsHistory(long validAfterMillis,
       long freshUntilMillis,
       SortedMap<String, double[]> pathSelectionWeights) {
-    List<HistoryUpdateWorker> historyUpdateWorkers =
-        new ArrayList<HistoryUpdateWorker>();
-    for (int i = 0; i < HISTORY_UPDATER_WORKERS_NUM; i++) {
-      HistoryUpdateWorker historyUpdateWorker =
-          new HistoryUpdateWorker(validAfterMillis, freshUntilMillis,
-          pathSelectionWeights, this);
-      historyUpdateWorkers.add(historyUpdateWorker);
-      historyUpdateWorker.setDaemon(true);
-      historyUpdateWorker.start();
-    }
-    for (HistoryUpdateWorker historyUpdateWorker : historyUpdateWorkers) {
-      try {
-        historyUpdateWorker.join();
-      } catch (InterruptedException e) {
-        /* This is not something that we can take care of.  Just leave the
-         * worker thread alone. */
-      }
-    }
-  }
-
-  private class HistoryUpdateWorker extends Thread {
-    private long validAfterMillis;
-    private long freshUntilMillis;
-    private SortedMap<String, double[]> pathSelectionWeights;
-    private WeightsStatusUpdater parent;
-    public HistoryUpdateWorker(long validAfterMillis,
-        long freshUntilMillis,
-        SortedMap<String, double[]> pathSelectionWeights,
-        WeightsStatusUpdater parent) {
-      this.validAfterMillis = validAfterMillis;
-      this.freshUntilMillis = freshUntilMillis;
-      this.pathSelectionWeights = pathSelectionWeights;
-      this.parent = parent;
-    }
-    public void run() {
-      String fingerprint = null;
-      double[] weights = null;
-      do {
-        fingerprint = null;
-        synchronized (pathSelectionWeights) {
-          if (!pathSelectionWeights.isEmpty()) {
-            fingerprint = pathSelectionWeights.firstKey();
-            weights = pathSelectionWeights.remove(fingerprint);
-          }
-        }
-        if (fingerprint != null) {
-          this.parent.addToHistory(fingerprint, this.validAfterMillis,
-              this.freshUntilMillis, weights);
+    String fingerprint = null;
+    double[] weights = null;
+    do {
+      fingerprint = null;
+      synchronized (pathSelectionWeights) {
+        if (!pathSelectionWeights.isEmpty()) {
+          fingerprint = pathSelectionWeights.firstKey();
+          weights = pathSelectionWeights.remove(fingerprint);
         }
-      } while (fingerprint != null);
-    }
+      }
+      if (fingerprint != null) {
+        this.addToHistory(fingerprint, validAfterMillis,
+            freshUntilMillis, weights);
+      }
+    } while (fingerprint != null);
   }
 
   private SortedMap<String, double[]> calculatePathSelectionProbabilities(





More information about the tor-commits mailing list