mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-13 06:33:44 +01:00
relays checkpoint their state file twice a day
This commit is contained in:
parent
5693fedb60
commit
66de6f7eb8
5
changes/bug3012
Normal file
5
changes/bug3012
Normal 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.
|
@ -5122,6 +5122,11 @@ or_state_load(void)
|
|||||||
/** If writing the state to disk fails, try again after this many seconds. */
|
/** If writing the state to disk fails, try again after this many seconds. */
|
||||||
#define STATE_WRITE_RETRY_INTERVAL 3600
|
#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. */
|
/** Write the persistent state to disk. Return 0 for success, <0 on failure. */
|
||||||
int
|
int
|
||||||
or_state_save(time_t now)
|
or_state_save(time_t now)
|
||||||
@ -5172,7 +5177,11 @@ or_state_save(time_t now)
|
|||||||
tor_free(fname);
|
tor_free(fname);
|
||||||
tor_free(contents);
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user