[tor-commits] [onionoo/release] Fix possible NPE and make tests pass again.

karsten at torproject.org karsten at torproject.org
Thu Aug 31 15:02:37 UTC 2017


commit b2b1bf1d0b2bce7748386b3ecdafec7391890fe6
Author: iwakeh <iwakeh at torproject.org>
Date:   Wed Aug 30 20:37:37 2017 +0000

    Fix possible NPE and make tests pass again.
    
    Also, added error logging for indexing process.
---
 .../org/torproject/onionoo/server/NodeIndexer.java | 30 +++++++++++++---------
 1 file changed, 18 insertions(+), 12 deletions(-)

diff --git a/src/main/java/org/torproject/onionoo/server/NodeIndexer.java b/src/main/java/org/torproject/onionoo/server/NodeIndexer.java
index db13ed9..5411d0e 100644
--- a/src/main/java/org/torproject/onionoo/server/NodeIndexer.java
+++ b/src/main/java/org/torproject/onionoo/server/NodeIndexer.java
@@ -91,7 +91,7 @@ public class NodeIndexer implements ServletContextListener, Runnable {
    * background thread. */
   public synchronized void startIndexing() {
     if (this.nodeIndexerThread == null) {
-      this.nodeIndexerThread = new Thread(this);
+      this.nodeIndexerThread = new Thread(this, "Onionoo-Node-Indexer");
       this.nodeIndexerThread.setDaemon(true);
       this.nodeIndexerThread.start();
     }
@@ -103,14 +103,18 @@ public class NodeIndexer implements ServletContextListener, Runnable {
 
   @Override
   public void run() {
-    while (this.nodeIndexerThread != null) {
-      this.indexNodeStatuses();
-      try {
-        Thread.sleep(ONE_MINUTE);
-      } catch (InterruptedException e) {
-        /* Nothing that we could handle, just check if there's new data
-         * to index now. */
+    try {
+      while (this.nodeIndexerThread != null) {
+        this.indexNodeStatuses();
+        try {
+          Thread.sleep(ONE_MINUTE);
+        } catch (InterruptedException e) {
+          /* Nothing that we could handle, just check if there's new data
+           * to index now. */
+        }
       }
+    } catch (Throwable th) { // catch all and log
+      log.error("Indexing failed: {}", th.getMessage(), th);
     }
   }
 
@@ -247,11 +251,13 @@ public class NodeIndexer implements ServletContextListener, Runnable {
       newRelaysByContact.get(contact).add(fingerprint);
       newRelaysByContact.get(contact).add(hashedFingerprint);
       String version = entry.getVersion();
-      if (!newRelaysByVersion.containsKey(version)) {
-        newRelaysByVersion.put(version, new HashSet<String>());
+      if (null != version) {
+        if (!newRelaysByVersion.containsKey(version)) {
+          newRelaysByVersion.put(version, new HashSet<String>());
+        }
+        newRelaysByVersion.get(version).add(fingerprint);
+        newRelaysByVersion.get(version).add(hashedFingerprint);
       }
-      newRelaysByVersion.get(version).add(fingerprint);
-      newRelaysByVersion.get(version).add(hashedFingerprint);
     }
     /* This loop can go away once all Onionoo services had their hourly
      * updater write effective families to summary documents at least





More information about the tor-commits mailing list