Merge remote-tracking branch 'origin/maint-0.2.2'

This commit is contained in:
Nick Mathewson 2011-04-28 21:17:51 -04:00
commit 20d6ac3530
2 changed files with 15 additions and 1 deletions

5
changes/bug3012 Normal file
View File

@ -0,0 +1,5 @@
o Minor features:
- Relays can go for weeks without writing out their state file. A
relay that crashes would lose its bandwidth history (including
capacity estimate), client country statistics, and so on. Now relays
checkpoint the file at least every 12 hours. Addresses bug 3012.

View File

@ -5300,6 +5300,11 @@ did_last_state_file_write_fail(void)
/** If writing the state to disk fails, try again after this many seconds. */
#define STATE_WRITE_RETRY_INTERVAL 3600
/** If we're a relay, how often should we checkpoint our state file even
* if nothing else dirties it? This will checkpoint ongoing stats like
* bandwidth used, per-country user stats, etc. */
#define STATE_RELAY_CHECKPOINT_INTERVAL (12*60*60)
/** Write the persistent state to disk. Return 0 for success, <0 on failure. */
int
or_state_save(time_t now)
@ -5352,7 +5357,11 @@ or_state_save(time_t now)
tor_free(fname);
tor_free(contents);
global_state->next_write = TIME_MAX;
if (server_mode(get_options()))
global_state->next_write = now + STATE_RELAY_CHECKPOINT_INTERVAL;
else
global_state->next_write = TIME_MAX;
return 0;
}