diff options
author | Matt Traudt <sirmatt@ksu.edu> | 2017-11-16 14:38:39 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2017-11-17 09:25:47 -0500 |
commit | b98614f1af6ed10aa0e3cd00d5baf57fb534f574 (patch) | |
tree | 0e08af7a036b39a649c684e81b9051ac1fe2b771 /src | |
parent | 8b2c01a46f4353deaa37d129bd21f32b4d990d1d (diff) | |
download | tor-b98614f1af6ed10aa0e3cd00d5baf57fb534f574.tar.gz tor-b98614f1af6ed10aa0e3cd00d5baf57fb534f574.zip |
Only log about lost KIST support once
Diffstat (limited to 'src')
-rw-r--r-- | src/or/scheduler.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/or/scheduler.c b/src/or/scheduler.c index 1438dc60f6..dabac386db 100644 --- a/src/or/scheduler.c +++ b/src/or/scheduler.c @@ -171,6 +171,8 @@ STATIC smartlist_t *channels_pending = NULL; */ STATIC struct event *run_sched_ev = NULL; +static int have_logged_kist_suddenly_disabled = 0; + /***************************************************************************** * Scheduling system static function definitions * @@ -252,13 +254,31 @@ select_scheduler(void) case SCHEDULER_KIST: if (!scheduler_can_use_kist()) { #ifdef HAVE_KIST_SUPPORT - log_notice(LD_SCHED, "Scheduler type KIST has been disabled by " - "the consensus or no kernel support."); + if (!have_logged_kist_suddenly_disabled) { + /* We should only log this once in most cases. If it was the kernel + * losing support for kist that caused scheduler_can_use_kist() to + * return false, then this flag makes sure we only log this message + * once. If it was the consensus that switched from "yes use kist" to + * "no don't use kist", then we still set the flag so we log once, but + * we unset the flag elsewhere if we ever can_use_kist() again. + */ + have_logged_kist_suddenly_disabled = 1; + log_notice(LD_SCHED, "Scheduler type KIST has been disabled by " + "the consensus or no kernel support."); + } #else /* !(defined(HAVE_KIST_SUPPORT)) */ log_info(LD_SCHED, "Scheduler type KIST not built in"); #endif /* defined(HAVE_KIST_SUPPORT) */ continue; } + /* This flag will only get set in one of two cases: + * 1 - the kernel lost support for kist. In that case, we don't expect to + * ever end up here + * 2 - the consensus went from "yes use kist" to "no don't use kist". + * We might end up here if the consensus changes back to "yes", in which + * case we might want to warn the user again if it goes back to "no" + * yet again. Thus we unset the flag */ + have_logged_kist_suddenly_disabled = 0; new_scheduler = get_kist_scheduler(); scheduler_kist_set_full_mode(); goto end; |