[or-cvs] [metrics-db/master] Handle NULL values and relays with zero relay flags.

karsten at torproject.org karsten at torproject.org
Tue Sep 14 12:14:19 UTC 2010


Author: Karsten Loesing <karsten.loesing at gmx.net>
Date: Tue, 14 Sep 2010 14:12:50 +0200
Subject: Handle NULL values and relays with zero relay flags.
Commit: 1dc5c7a732df9a28186263d47fad40d1bb0d8996

---
 .../ernie/db/RelayDescriptorDatabaseImporter.java  |   13 +++++++++----
 .../torproject/ernie/db/RelayDescriptorParser.java |    2 +-
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/org/torproject/ernie/db/RelayDescriptorDatabaseImporter.java b/src/org/torproject/ernie/db/RelayDescriptorDatabaseImporter.java
index 4b97167..7938edc 100644
--- a/src/org/torproject/ernie/db/RelayDescriptorDatabaseImporter.java
+++ b/src/org/torproject/ernie/db/RelayDescriptorDatabaseImporter.java
@@ -216,7 +216,9 @@ public final class RelayDescriptorDatabaseImporter {
             + (flags.contains("Valid") ? "t" : "f") + "\t"
             + (flags.contains("V2Dir") ? "t" : "f") + "\t"
             + (flags.contains("V3Dir") ? "t" : "f") + "\t"
-            + version + "\t" + bandwidth + "\t" + ports + "\t");
+            + (version != null ? version : "\\N") + "\t"
+            + (bandwidth >= 0 ? bandwidth : "\\N") + "\t"
+            + (ports != null ? ports : "\\N") + "\t");
         this.statusentryOut.write(PGbytea.toPGString(rawDescriptor).
             replaceAll("\\\\\\\\", "\\\\\\\\\\\\\\\\") + "\n");
       }
@@ -274,9 +276,12 @@ public final class RelayDescriptorDatabaseImporter {
         this.descriptorOut.write(descriptor.toLowerCase() + "\t"
             + nickname + "\t" + address + "\t" + orPort + "\t" + dirPort
             + "\t" + bandwidthAvg + "\t" + bandwidthBurst + "\t"
-            + bandwidthObserved + "\t" + new String(platform.getBytes(),
-            "US-ASCII") + "\t" + dateTimeFormat.format(published) + "\t"
-            + uptime + "\t" + extraInfoDigest + "\t");
+            + bandwidthObserved + "\t"
+            + (platform != null && platform.length() > 0
+            ? new String(platform.getBytes(), "US-ASCII") : "\\N") + "\t"
+            + dateTimeFormat.format(published) + "\t"
+            + (uptime >= 0 ? uptime : "\\N") + "\t"
+            + (extraInfoDigest != null ? extraInfoDigest : "\\N") + "\t");
         this.descriptorOut.write(PGbytea.toPGString(rawDescriptor).
             replaceAll("\\\\\\\\", "\\\\\\\\\\\\\\\\") + "\n");
       }
diff --git a/src/org/torproject/ernie/db/RelayDescriptorParser.java b/src/org/torproject/ernie/db/RelayDescriptorParser.java
index 9dfac56..8f9a29f 100644
--- a/src/org/torproject/ernie/db/RelayDescriptorParser.java
+++ b/src/org/torproject/ernie/db/RelayDescriptorParser.java
@@ -181,7 +181,7 @@ public class RelayDescriptorParser {
             address = parts[6];
             orPort = Long.parseLong(parts[7]);
             dirPort = Long.parseLong(parts[8]);
-          } else if (line.startsWith("s ")) {
+          } else if (line.startsWith("s ") || line.equals("s")) {
             rawStatusEntry.append(line + "\n");
             if (line.contains(" Running")) {
               exit += line.contains(" Exit") ? 1 : 0;
-- 
1.7.1



More information about the tor-commits mailing list