[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[or-cvs] [tor/release-0.2.2] Wait 60 minutes before retrying failed state save; bug2346



commit 95968a625e91ae43aef9a4b810f93078dabe1419
Author: Nick Mathewson <nickm@xxxxxxxxxxxxxx>
Date:   Mon Jan 10 16:44:42 2011 -0500

    Wait 60 minutes before retrying failed state save; bug2346
---
 changes/bug2346 |    5 +++++
 src/or/config.c |    8 +++++++-
 2 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/changes/bug2346 b/changes/bug2346
new file mode 100644
index 0000000..341b4f4
--- /dev/null
+++ b/changes/bug2346
@@ -0,0 +1,5 @@
+  o Minor features
+    - If writing the state file to disk fails, wait an hour before
+      retrying again.  Fixes bug 2346.  Bugfix on Tor 0.1.1.3-alpha.
+
+
diff --git a/src/or/config.c b/src/or/config.c
index 17d776e..5198eaa 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -5145,6 +5145,9 @@ or_state_load(void)
   return r;
 }
 
+/** If writing the state to disk fails, try again after this many seconds. */
+#define STATE_WRITE_RETRY_INTERVAL 3600
+
 /** Write the persistent state to disk. Return 0 for success, <0 on failure. */
 int
 or_state_save(time_t now)
@@ -5179,10 +5182,13 @@ or_state_save(time_t now)
   tor_free(state);
   fname = get_datadir_fname("state");
   if (write_str_to_file(fname, contents, 0)<0) {
-    log_warn(LD_FS, "Unable to write state to file \"%s\"", fname);
+    log_warn(LD_FS, "Unable to write state to file \"%s\"; will try later",
+             fname);
     global_state->LastWritten = -1;
     tor_free(fname);
     tor_free(contents);
+    /* Try again in after STATE_WRITE_RETRY_INTERVAL */
+    global_state->next_write = now + STATE_WRITE_RETRY_INTERVAL;
     return -1;
   }