[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [bridgedb] 01/02: Add a delay when retrying to connect to the rdsys backend



This is an automated email from the git hooks/post-receive script.

meskio pushed a commit to branch main
in repository bridgedb.

commit 46127ac1aa32a8ee81aee65b8d847f3bcc7e5ab6
Author: meskio <meskio@xxxxxxxxxxxxxx>
AuthorDate: Wed May 18 16:44:20 2022 +0200

    Add a delay when retrying to connect to the rdsys backend
    
    So we don't fill up the logs with tons of connecting errors.
    
    Closes: rdsys#99
---
 bridgedb/rdsys.py | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/bridgedb/rdsys.py b/bridgedb/rdsys.py
index 0aad902..f6ccd4e 100644
--- a/bridgedb/rdsys.py
+++ b/bridgedb/rdsys.py
@@ -12,6 +12,7 @@ from bridgedb.bridges import Bridge, MalformedBridgeInfo
 
 
 inter_message_delimiter = b"\r"
+max_retry_delay = 60*60  # 1 hour
 
 
 class RdsysProtocol(Protocol):
@@ -98,7 +99,20 @@ def start_stream(distributor, token, rdsys_address, hashring):
     }
     agent = Agent(reactor)
 
+    delay = 1
+
+    def delayError(err):
+        nonlocal delay
+        d = Deferred()
+        reactor.callLater(delay, d.errback, err)
+        delay *= 2
+        if delay > max_retry_delay:
+            delay = max_retry_delay
+        return d
+
     def cbResponse(r):
+        nonlocal delay
+        delay = 1
         finished = Deferred()
         r.deliverBody(RdsysProtocol(finished, hashring, distributor))
         return finished
@@ -118,6 +132,7 @@ def start_stream(distributor, token, rdsys_address, hashring):
             headers=headers,
             bodyProducer=body_producer,
         )
+        d.addErrback(delayError)
         d.addCallback(cbResponse)
         d.addErrback(lambda err: logging.warning("Error on the connection with rdsys: " + str(err)))
         d.addCallback(connect)

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits