]> git.saurik.com Git - redis.git/blobdiff - src/aof.c
diskstore removed
[redis.git] / src / aof.c
index 78387cd366c8112d309e27c85cbde1b40e34e5ee..ac6b97915e26b5f61ef85b10afee377ab9f4c31d 100644 (file)
--- a/src/aof.c
+++ b/src/aof.c
@@ -304,6 +304,7 @@ int loadAppendOnlyFile(char *filename) {
     server.appendonly = appendonly;
     stopLoading();
     aofUpdateCurrentSize();
     server.appendonly = appendonly;
     stopLoading();
     aofUpdateCurrentSize();
+    server.auto_aofrewrite_base_size = server.appendonly_current_size;
     return REDIS_OK;
 
 readerr:
     return REDIS_OK;
 
 readerr:
@@ -341,7 +342,7 @@ int rewriteAppendOnlyFile(char *filename) {
         redisDb *db = server.db+j;
         dict *d = db->dict;
         if (dictSize(d) == 0) continue;
         redisDb *db = server.db+j;
         dict *d = db->dict;
         if (dictSize(d) == 0) continue;
-        di = dictGetIterator(d);
+        di = dictGetSafeIterator(d);
         if (!di) {
             fclose(fp);
             return REDIS_ERR;
         if (!di) {
             fclose(fp);
             return REDIS_ERR;
@@ -573,10 +574,6 @@ int rewriteAppendOnlyFileBackground(void) {
     long long start;
 
     if (server.bgrewritechildpid != -1) return REDIS_ERR;
     long long start;
 
     if (server.bgrewritechildpid != -1) return REDIS_ERR;
-    if (server.ds_enabled != 0) {
-        redisLog(REDIS_WARNING,"BGREWRITEAOF called with diskstore enabled: AOF is not supported when diskstore is enabled. Operation not performed.");
-        return REDIS_ERR;
-    }
     start = ustime();
     if ((childpid = fork()) == 0) {
         char tmpfile[256];
     start = ustime();
     if ((childpid = fork()) == 0) {
         char tmpfile[256];
@@ -618,7 +615,7 @@ void bgrewriteaofCommand(redisClient *c) {
         addReplyError(c,"Background append only file rewriting already in progress");
     } else if (server.bgsavechildpid != -1) {
         server.aofrewrite_scheduled = 1;
         addReplyError(c,"Background append only file rewriting already in progress");
     } else if (server.bgsavechildpid != -1) {
         server.aofrewrite_scheduled = 1;
-        addReplyStatus(c,"Background append only file rewriting started");
+        addReplyStatus(c,"Background append only file rewriting scheduled");
     } else if (rewriteAppendOnlyFileBackground() == REDIS_OK) {
         addReplyStatus(c,"Background append only file rewriting started");
     } else {
     } else if (rewriteAppendOnlyFileBackground() == REDIS_OK) {
         addReplyStatus(c,"Background append only file rewriting started");
     } else {
@@ -689,6 +686,7 @@ void backgroundRewriteDoneHandler(int exitcode, int bysignal) {
             server.appendseldb = -1; /* Make sure it will issue SELECT */
             redisLog(REDIS_NOTICE,"The new append only file was selected for future appends.");
             aofUpdateCurrentSize();
             server.appendseldb = -1; /* Make sure it will issue SELECT */
             redisLog(REDIS_NOTICE,"The new append only file was selected for future appends.");
             aofUpdateCurrentSize();
+            server.auto_aofrewrite_base_size = server.appendonly_current_size;
         } else {
             /* If append only is disabled we just generate a dump in this
              * format. Why not? */
         } else {
             /* If append only is disabled we just generate a dump in this
              * format. Why not? */