commit 19abb1204a7c0d2644b6a7e3e5e3f5baf87f68f8 Author: Karsten Loesing karsten.loesing@gmx.net Date: Fri Nov 30 21:15:01 2012 +0100
Warn if we can't parse a descriptor.
Prevents bugs like #7587 where not updating metrics-lib led to a nasty graphing problem in Atlas. Now we'd at least learn about the problem. --- .../torproject/onionoo/BandwidthDataWriter.java | 5 +++++ src/org/torproject/onionoo/CurrentNodes.java | 10 ++++++++++ src/org/torproject/onionoo/DetailDataWriter.java | 20 ++++++++++++++++++++ src/org/torproject/onionoo/WeightsDataWriter.java | 10 ++++++++++ 4 files changed, 45 insertions(+), 0 deletions(-)
diff --git a/src/org/torproject/onionoo/BandwidthDataWriter.java b/src/org/torproject/onionoo/BandwidthDataWriter.java index 7543863..af0fc61 100644 --- a/src/org/torproject/onionoo/BandwidthDataWriter.java +++ b/src/org/torproject/onionoo/BandwidthDataWriter.java @@ -71,6 +71,11 @@ public class BandwidthDataWriter { Iterator<DescriptorFile> descriptorFiles = reader.readDescriptors(); while (descriptorFiles.hasNext()) { DescriptorFile descriptorFile = descriptorFiles.next(); + if (descriptorFile.getException() != null) { + System.out.println("Could not parse " + + descriptorFile.getFileName()); + descriptorFile.getException().printStackTrace(); + } if (descriptorFile.getDescriptors() != null) { for (Descriptor descriptor : descriptorFile.getDescriptors()) { if (descriptor instanceof ExtraInfoDescriptor) { diff --git a/src/org/torproject/onionoo/CurrentNodes.java b/src/org/torproject/onionoo/CurrentNodes.java index 252abbe..82ba592 100644 --- a/src/org/torproject/onionoo/CurrentNodes.java +++ b/src/org/torproject/onionoo/CurrentNodes.java @@ -247,6 +247,11 @@ public class CurrentNodes { Iterator<DescriptorFile> descriptorFiles = reader.readDescriptors(); while (descriptorFiles.hasNext()) { DescriptorFile descriptorFile = descriptorFiles.next(); + if (descriptorFile.getException() != null) { + System.out.println("Could not parse " + + descriptorFile.getFileName()); + descriptorFile.getException().printStackTrace(); + } if (descriptorFile.getDescriptors() != null) { for (Descriptor descriptor : descriptorFile.getDescriptors()) { if (descriptor instanceof RelayNetworkStatusConsensus) { @@ -382,6 +387,11 @@ public class CurrentNodes { Iterator<DescriptorFile> descriptorFiles = reader.readDescriptors(); while (descriptorFiles.hasNext()) { DescriptorFile descriptorFile = descriptorFiles.next(); + if (descriptorFile.getException() != null) { + System.out.println("Could not parse " + + descriptorFile.getFileName()); + descriptorFile.getException().printStackTrace(); + } if (descriptorFile.getDescriptors() != null) { for (Descriptor descriptor : descriptorFile.getDescriptors()) { if (descriptor instanceof BridgeNetworkStatus) { diff --git a/src/org/torproject/onionoo/DetailDataWriter.java b/src/org/torproject/onionoo/DetailDataWriter.java index 43d1206..e085617 100644 --- a/src/org/torproject/onionoo/DetailDataWriter.java +++ b/src/org/torproject/onionoo/DetailDataWriter.java @@ -176,6 +176,11 @@ public class DetailDataWriter { Iterator<DescriptorFile> descriptorFiles = reader.readDescriptors(); while (descriptorFiles.hasNext()) { DescriptorFile descriptorFile = descriptorFiles.next(); + if (descriptorFile.getException() != null) { + System.out.println("Could not parse " + + descriptorFile.getFileName()); + descriptorFile.getException().printStackTrace(); + } if (descriptorFile.getDescriptors() != null) { for (Descriptor descriptor : descriptorFile.getDescriptors()) { if (descriptor instanceof ServerDescriptor) { @@ -316,6 +321,11 @@ public class DetailDataWriter { Iterator<DescriptorFile> descriptorFiles = reader.readDescriptors(); while (descriptorFiles.hasNext()) { DescriptorFile descriptorFile = descriptorFiles.next(); + if (descriptorFile.getException() != null) { + System.out.println("Could not parse " + + descriptorFile.getFileName()); + descriptorFile.getException().printStackTrace(); + } if (descriptorFile.getDescriptors() != null) { for (Descriptor descriptor : descriptorFile.getDescriptors()) { if (descriptor instanceof ExitList) { @@ -354,6 +364,11 @@ public class DetailDataWriter { Iterator<DescriptorFile> descriptorFiles = reader.readDescriptors(); while (descriptorFiles.hasNext()) { DescriptorFile descriptorFile = descriptorFiles.next(); + if (descriptorFile.getException() != null) { + System.out.println("Could not parse " + + descriptorFile.getFileName()); + descriptorFile.getException().printStackTrace(); + } if (descriptorFile.getDescriptors() != null) { for (Descriptor descriptor : descriptorFile.getDescriptors()) { if (descriptor instanceof ServerDescriptor) { @@ -383,6 +398,11 @@ public class DetailDataWriter { Iterator<DescriptorFile> descriptorFiles = reader.readDescriptors(); while (descriptorFiles.hasNext()) { DescriptorFile descriptorFile = descriptorFiles.next(); + if (descriptorFile.getException() != null) { + System.out.println("Could not parse " + + descriptorFile.getFileName()); + descriptorFile.getException().printStackTrace(); + } if (descriptorFile.getDescriptors() != null) { for (Descriptor descriptor : descriptorFile.getDescriptors()) { if (descriptor instanceof BridgePoolAssignment) { diff --git a/src/org/torproject/onionoo/WeightsDataWriter.java b/src/org/torproject/onionoo/WeightsDataWriter.java index 67c07dc..97e37ed 100644 --- a/src/org/torproject/onionoo/WeightsDataWriter.java +++ b/src/org/torproject/onionoo/WeightsDataWriter.java @@ -54,6 +54,11 @@ public class WeightsDataWriter { Iterator<DescriptorFile> descriptorFiles = reader.readDescriptors(); while (descriptorFiles.hasNext()) { DescriptorFile descriptorFile = descriptorFiles.next(); + if (descriptorFile.getException() != null) { + System.out.println("Could not parse " + + descriptorFile.getFileName()); + descriptorFile.getException().printStackTrace(); + } if (descriptorFile.getDescriptors() != null) { for (Descriptor descriptor : descriptorFile.getDescriptors()) { if (descriptor instanceof ServerDescriptor) { @@ -81,6 +86,11 @@ public class WeightsDataWriter { Iterator<DescriptorFile> descriptorFiles = reader.readDescriptors(); while (descriptorFiles.hasNext()) { DescriptorFile descriptorFile = descriptorFiles.next(); + if (descriptorFile.getException() != null) { + System.out.println("Could not parse " + + descriptorFile.getFileName()); + descriptorFile.getException().printStackTrace(); + } if (descriptorFile.getDescriptors() != null) { for (Descriptor descriptor : descriptorFile.getDescriptors()) { if (descriptor instanceof RelayNetworkStatusConsensus) {
tor-commits@lists.torproject.org