From 34f07ec8629a94b87fd19f93bb62d4f91286fbc6 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Mon, 11 Mar 2013 20:50:02 -0400 Subject: [PATCH 1/2] When hibernating, don't heartbeat about problems. Fixes part of 7302. --- changes/bug7302 | 5 +++++ src/or/status.c | 11 +++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 changes/bug7302 diff --git a/changes/bug7302 b/changes/bug7302 new file mode 100644 index 0000000000..2949e40946 --- /dev/null +++ b/changes/bug7302 @@ -0,0 +1,5 @@ + o Minor bugfixes: + - Don't log inappropriate heartbeat messages when hibernating: a + hibernating node is _expected_ to drop out of the consensus, + decide it isn't bootstrapped, and so forth. Fixes part of bug + #7302; bugfix on 0.2.3.1-alpha. diff --git a/src/or/status.c b/src/or/status.c index 126167dcb9..6a43fc4d89 100644 --- a/src/or/status.c +++ b/src/or/status.c @@ -14,6 +14,7 @@ #include "router.h" #include "circuitlist.h" #include "main.h" +#include "hibernate.h" /** Return the total number of circuits. */ static int @@ -85,11 +86,12 @@ log_heartbeat(time_t now) char *bw_rcvd = NULL; char *uptime = NULL; const routerinfo_t *me; + const int hibernating = we_are_hibernating(); const or_options_t *options = get_options(); (void)now; - if (public_server_mode(options)) { + if (public_server_mode(options) && !hibernating) { /* Let's check if we are in the current cached consensus. */ if (!(me = router_get_my_routerinfo())) return -1; /* Something stinks, we won't even attempt this. */ @@ -104,10 +106,11 @@ log_heartbeat(time_t now) bw_sent = bytes_to_usage(get_bytes_written()); log_fn(LOG_NOTICE, LD_HEARTBEAT, "Heartbeat: Tor's uptime is %s, with %d " - "circuits open. I've sent %s and received %s.", - uptime, count_circuits(),bw_sent,bw_rcvd); + "circuits open. I've sent %s and received %s.%s", + uptime, count_circuits(),bw_sent,bw_rcvd, + hibernating?" We are currently hibernating.":""); - if (stats_n_data_cells_packaged) + if (stats_n_data_cells_packaged && !hibernating) log_notice(LD_HEARTBEAT, "Average packaged cell fullness: %2.3f%%", 100*(U64_TO_DBL(stats_n_data_bytes_packaged) / U64_TO_DBL(stats_n_data_cells_packaged*RELAY_PAYLOAD_SIZE)) ); From 805ecb8719e5e66d708f040027fecc6de56b3a5b Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Mon, 11 Mar 2013 20:52:20 -0400 Subject: [PATCH 2/2] Make control_event_bootstrap_problem always INFO when hibernating When we're hibernating, the main reqason we can't bootstrap will always be that we're hibernating: reporting anything else at severity WARN is pointless. Fixes part of 7302. --- changes/bug7302 | 8 +++++++- src/or/control.c | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/changes/bug7302 b/changes/bug7302 index 2949e40946..fec615ff90 100644 --- a/changes/bug7302 +++ b/changes/bug7302 @@ -2,4 +2,10 @@ - Don't log inappropriate heartbeat messages when hibernating: a hibernating node is _expected_ to drop out of the consensus, decide it isn't bootstrapped, and so forth. Fixes part of bug - #7302; bugfix on 0.2.3.1-alpha. + 7302; bugfix on 0.2.3.1-alpha. + + - Don't complain about bootstrapping problems while hibernating. + These complaints reflect a general code problems, but not one + with any problematic effects. (No connections are actually + opened.) Fixes part of bug 7302; bugfix on 0.2.3.2-alpha. + diff --git a/src/or/control.c b/src/or/control.c index 03e5d79c8e..5e61cd7878 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -4717,6 +4717,9 @@ control_event_bootstrap_problem(const char *warn, int reason) !any_pending_bridge_descriptor_fetches()) recommendation = "warn"; + if (we_are_hibernating()) + recommendation = "ignore"; + while (status>=0 && bootstrap_status_to_string(status, &tag, &summary) < 0) status--; /* find a recognized status string based on current progress */ status = bootstrap_percent; /* set status back to the actual number */