]> git.saurik.com Git - redis.git/commitdiff
Merge pull request #587 from saj/truncate-short-write-from-aof
authorSalvatore Sanfilippo <antirez@gmail.com>
Fri, 27 Jul 2012 10:56:48 +0000 (03:56 -0700)
committerSalvatore Sanfilippo <antirez@gmail.com>
Fri, 27 Jul 2012 10:56:48 +0000 (03:56 -0700)
Truncate short write from the AOF

1  2 
src/aof.c

diff --combined src/aof.c
index 1df60b941e0f5d34b40cd20c8eae6016b4502b13,7c9bbdcb5e4ddbccd3e162556f6dd9eaf79f19e6..441ccaf18802ef9139efd2c38169a3c39a57799d
+++ b/src/aof.c
@@@ -250,6 -250,13 +250,13 @@@ void flushAppendOnlyFile(int force) 
                                     strerror(errno),
                                     (long)nwritten,
                                     (long)sdslen(server.aof_buf));
+             if (ftruncate(server.aof_fd, server.aof_current_size) == -1) {
+                 redisLog(REDIS_WARNING, "Could not remove short write "
+                          "from the append-only file.  Redis may refuse "
+                          "to load the AOF the next time it starts.  "
+                          "ftruncate: %s", strerror(errno));
+             }
          }
          exit(1);
      }
@@@ -1093,8 -1100,6 +1100,8 @@@ void backgroundRewriteDoneHandler(int e
              server.aof_buf = sdsempty();
          }
  
 +        server.aof_lastbgrewrite_status = REDIS_OK;
 +
          redisLog(REDIS_NOTICE, "Background AOF rewrite finished successfully");
          /* Change state from WAIT_REWRITE to ON if needed */
          if (server.aof_state == REDIS_AOF_WAIT_REWRITE)
          redisLog(REDIS_VERBOSE,
              "Background AOF rewrite signal handler took %lldus", ustime()-now);
      } else if (!bysignal && exitcode != 0) {
 +        server.aof_lastbgrewrite_status = REDIS_ERR;
 +
          redisLog(REDIS_WARNING,
              "Background AOF rewrite terminated with error");
      } else {
 +        server.aof_lastbgrewrite_status = REDIS_ERR;
 +
          redisLog(REDIS_WARNING,
              "Background AOF rewrite terminated by signal %d", bysignal);
      }