[tor-commits] [bridgedb/master] Catch DescriptorWarnings and log them when we get identical descriptors.

isis at torproject.org isis at torproject.org
Wed Mar 25 19:03:46 UTC 2015


commit a27d79055d7b8de22a069c6ab8ee6ce2ffcd459a
Author: Isis Lovecruft <isis at torproject.org>
Date:   Sat Mar 21 03:31:06 2015 +0000

    Catch DescriptorWarnings and log them when we get identical descriptors.
    
    It turns out this actually does happen.  Not very many times, though.
    When redeploying BridgeDB-0.3.0 with the new Stem descriptor parsers
    from #9380, [0] there were two bridges who had completely identical
    descriptor (including identical timestamps).  Each of those bridges had
    exactly one perfectly identical duplicate descriptor each, and each
    bridge was quite new, having just appeared within the last 8 hours.
    
    Previously, the BridgeDB process would die because we didn't catch these
    errors.  This fixes that.
    
    [0]: https://bugs.torproject.org/9380
---
 lib/bridgedb/parse/descriptors.py |   12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/lib/bridgedb/parse/descriptors.py b/lib/bridgedb/parse/descriptors.py
index 80063ca..409a200 100644
--- a/lib/bridgedb/parse/descriptors.py
+++ b/lib/bridgedb/parse/descriptors.py
@@ -198,10 +198,14 @@ def deduplicate(descriptors):
             # ``platform`` line in its server-descriptor and tell whoever
             # wrote that code that they're probably (D)DOSing the Tor network.
             else:
-                raise DescriptorWarning(
-                    ("Duplicate descriptor with identical timestamp (%s) for "
-                     "router with fingerprint '%s'!")
-                    % (descriptor.published, fingerprint))
+                try:
+                    raise DescriptorWarning(
+                        ("Duplicate descriptor with identical timestamp (%s) "
+                         "for router with fingerprint '%s'!")
+                        % (descriptor.published, fingerprint))
+                # And just in case it does happen, catch the warning:
+                except DescriptorWarning as descwarn:
+                    logging.warn("DescriptorWarning: %s" % str(descwarn))
 
         # Hoorah! No duplicates! (yet...)
         else:





More information about the tor-commits mailing list