uncaught NFE and other bugs in weight status document processing
While waiting for OOM in #19249 (moved) I encountered this
Exception in thread "main" java.lang.NumberFormatException: For input string: "0,000086161974"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1250)
at java.lang.Double.parseDouble(Double.java:540)
at org.torproject.onionoo.docs.WeightsStatus.setFromDocumentString(WeightsStatus.java:71)
at org.torproject.onionoo.docs.DocumentStore.retrieveParsedStatusFile(DocumentStore.java:500)
at org.torproject.onionoo.docs.DocumentStore.retrieveDocumentFile(DocumentStore.java:484)
at org.torproject.onionoo.docs.DocumentStore.retrieve(DocumentStore.java:363)
at org.torproject.onionoo.updater.WeightsStatusUpdater.updateWeightsHistory(WeightsStatusUpdater.java:64)
at org.torproject.onionoo.updater.WeightsStatusUpdater.processRelayNetworkConsensus(WeightsStatusUpdater.java:54)
at org.torproject.onionoo.updater.WeightsStatusUpdater.processDescriptor(WeightsStatusUpdater.java:39)
at org.torproject.onionoo.updater.DescriptorSource.readArchivedDescriptors(DescriptorSource.java:197)
at org.torproject.onionoo.updater.DescriptorSource.readDescriptors(DescriptorSource.java:83)
at org.torproject.onionoo.cron.Main.updateStatuses(Main.java:188)
at org.torproject.onionoo.cron.Main.run(Main.java:122)
at org.torproject.onionoo.cron.Main.runOrScheduleExecutions(Main.java:96)
at org.torproject.onionoo.cron.Main.main(Main.java:32)
The code is here:
double[] weights = new double[] { -1.0,
Double.parseDouble(parts[5]),
Double.parseDouble(parts[6]),
Double.parseDouble(parts[7]),
Double.parseDouble(parts[8]), -1.0, -1.0 };
Might be due to the locale of the server, but should be caught and logged.
Maybe, use this ticket to scan the code for similar things?