commit a050110db59d136f6f46809c4b18fe487012e546 Author: juga0 juga@riseup.net Date: Mon Dec 21 16:24:50 2020 +0000
fix: relaylist: Stop measuring relays not in the consenus
as this might cause many circuit errors. They're already added to the generator. Also adapt the number in test_init_relays.
Closes: #40037.
Happy solstice! :) --- sbws/lib/relaylist.py | 17 +++++------------ tests/unit/lib/test_relaylist.py | 8 ++++---- 2 files changed, 9 insertions(+), 16 deletions(-)
diff --git a/sbws/lib/relaylist.py b/sbws/lib/relaylist.py index 8a07ce7..640e3eb 100644 --- a/sbws/lib/relaylist.py +++ b/sbws/lib/relaylist.py @@ -14,7 +14,7 @@ from ..globals import ( MAX_RECENT_PRIORITY_LIST_COUNT, MEASUREMENTS_PERIOD ) -from ..util import timestamp, timestamps +from ..util import timestamps
log = logging.getLogger(__name__)
@@ -250,12 +250,6 @@ class Relay: def relay_recent_priority_list_count(self): return len(self.relay_recent_priority_list)
- def is_old(self): - """Whether the last consensus seen for this relay is older than the - measurement period. - """ - return timestamp.is_old(self.last_consensus_timestamp) - # XXX: tech-debt: replace `_desc` attr by a a `dequee` of the last # descriptors seen for this relay and the timestamp. def update_server_descriptor(self, server_descriptor): @@ -417,11 +411,10 @@ class RelayList: # already added to the new list. new_relays_dict.pop(fp)
- # If the relay is not in the current consensus but is not "old" - # yet, add it to the new list of relays too, though its timestamp, - # router status and descriptor can't be updated. - elif not r.is_old(): - new_relays.append(r) + # In #30727, the relay that is not in the current conensus but is + # not "old", was added to the new list of relays too. + # In #40037 we think it should not be measured, as it might cause + # many circuit errors. It's already added to the generator. # Otherwise, don't add it to the new list of relays. # For debugging, count the old relays that will be discarded. else: diff --git a/tests/unit/lib/test_relaylist.py b/tests/unit/lib/test_relaylist.py index 31673ba..399d897 100644 --- a/tests/unit/lib/test_relaylist.py +++ b/tests/unit/lib/test_relaylist.py @@ -51,7 +51,7 @@ def test_init_relays( assert 6505 == 6433 + len(added_fps) # The calculated min bw for the second hop assert 2120000 == relay_list._exit_min_bw - assert 200000 == relay_list._non_exit_min_bw + assert 210000 == relay_list._non_exit_min_bw
# Five days later plus 1 second. # The first consensus timestamp will get removed. @@ -69,10 +69,10 @@ def test_init_relays( removed_fps = fps.difference(fps_5days_later) # The number of relays will be the number of relays in the cosensus plus # the added ones minus the removed ones. - assert 6925 == 6505 + len(added_fps) - len(removed_fps) + assert 6596 == 6505 + len(added_fps) - len(removed_fps) # The calculated min bw for the second hop - assert 2790000 == relay_list._exit_min_bw - assert 110000 == relay_list._non_exit_min_bw + assert 2800000 == relay_list._exit_min_bw + assert 150000 == relay_list._non_exit_min_bw
def test_increment_recent_measurement_attempt(args, conf, controller):