commit b2772926bbf9b5f1565b07be96faf053f64bda71 Author: Damian Johnson atagar@torproject.org Date: Sun Oct 11 09:42:02 2015 -0700
Download from authorities in serial
Parallel downloads no longer make sense now that we're checking authority latency. Attempting to do multiple at once skew our metrics. --- consensus_health_checker.py | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-)
diff --git a/consensus_health_checker.py b/consensus_health_checker.py index d34db57..1a9608d 100755 --- a/consensus_health_checker.py +++ b/consensus_health_checker.py @@ -762,7 +762,7 @@ def get_votes():
def _get_documents(label, resource): - queries, documents, issues = {}, {}, [] + documents, times_taken, issues = {}, {}, []
for authority in DIRECTORY_AUTHORITIES.values(): # skip urras, it's having a long outage @@ -773,25 +773,22 @@ def _get_documents(label, resource): if authority.v3ident is None: continue # not a voting authority
- queries[authority.nickname] = downloader.query( + query = downloader.query( resource, endpoints = [(authority.address, authority.dir_port)], default_params = False, validate = True, )
- times_taken = {} - - for authority, query in queries.items(): try: start_time = time.time() - documents[authority] = query.run()[0] - times_taken[authority] = time.time() - start_time + documents[authority.nickname] = query.run()[0] + times_taken[authority.nickname] = time.time() - start_time except Exception as exc: if label == 'vote': # try to download the vote via the other authorities
- v3ident = DIRECTORY_AUTHORITIES[authority].v3ident + v3ident = DIRECTORY_AUTHORITIES[authority.nickname].v3ident
query = downloader.query( '/tor/status-vote/current/%s.z' % v3ident, @@ -802,10 +799,10 @@ def _get_documents(label, resource): query.run(True)
if not query.error: - documents[authority] = list(query)[0] + documents[authority.nickname] = list(query)[0] continue
- issues.append(Issue(Runlevel.ERROR, 'AUTHORITY_UNAVAILABLE', fetch_type = label, authority = authority, url = query.download_url, error = exc, to = [authority])) + issues.append(Issue(Runlevel.ERROR, 'AUTHORITY_UNAVAILABLE', fetch_type = label, authority = authority.nickname, url = query.download_url, error = exc, to = [authority.nickname]))
if label == 'consensus': median_time = sorted(times_taken.values())[len(times_taken) / 2]
tor-commits@lists.torproject.org