From 5bfb4221570ba7dc5daeabb599936d442d6c1e40 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Thu, 18 Oct 2007 19:51:14 +0000 Subject: [PATCH] r15934@catbus: nickm | 2007-10-18 15:32:56 -0400 When we have plenty of directory information, don't try to launch descriptor downloads quite so eagerly. svn:r12033 --- ChangeLog | 2 ++ src/or/main.c | 15 ++++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 32c3ba76f5..dbaf444aaa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -19,6 +19,8 @@ Changes in version 0.2.0.9-alpha - 2007-10-?? o Minor features (performance): - Call routerlist_remove_old_routers() much less often. This should speed startup, especially on directory caches. + - Don't try to launch descriptor downloads quite so often when we + have enough directory information. o Minor bugfixes (directory authorities): - Correct the implementation of "download votes by digest." Bugfix on diff --git a/src/or/main.c b/src/or/main.c index 37aefb46fc..c3bb3c3f6f 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -98,8 +98,12 @@ int has_completed_circuit=0; /** How often do we check buffers and pools for empty space that can be * deallocated? */ #define MEM_SHRINK_INTERVAL (60) -/** How often do we check for router descriptors that we should download? */ -#define DESCRIPTOR_RETRY_INTERVAL (10) +/** How often do we check for router descriptors that we should download + * when we have too little directory info? */ +#define GREEDY_DESCRIPTOR_RETRY_INTERVAL (10) +/** How often do we check for router descriptors that we should download + * when we have enough directory info? */ +#define LAZY_DESCRIPTOR_RETRY_INTERVAL (60) /** How often do we 'forgive' undownloadable router descriptors and attempt * to download them again? */ #define DESCRIPTOR_FAILURE_RESET_INTERVAL (60*60) @@ -859,13 +863,14 @@ run_scheduled_events(time_t now) } if (time_to_try_getting_descriptors < now) { - /* XXXX Maybe we should do this every 10sec when not enough info, - * and every 60sec when we have enough info -NM Great idea -RD */ update_router_descriptor_downloads(now); update_extrainfo_downloads(now); if (options->UseBridges) fetch_bridge_descriptors(now); - time_to_try_getting_descriptors = now + DESCRIPTOR_RETRY_INTERVAL; + if (router_have_minimum_dir_info()) + time_to_try_getting_descriptors = now + LAZY_DESCRIPTOR_RETRY_INTERVAL; + else + time_to_try_getting_descriptors = now + GREEDY_DESCRIPTOR_RETRY_INTERVAL; } if (time_to_reset_descriptor_failures < now) {