commit 19abb1204a7c0d2644b6a7e3e5e3f5baf87f68f8
Author: Karsten Loesing <karsten.loesing(a)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) {