]> git.saurik.com Git - redis.git/commitdiff
SHUTDOWN now does the right thing when append only is on, that is, fsync instead...
authorantirez <antirez@gmail.com>
Fri, 18 Dec 2009 12:31:44 +0000 (07:31 -0500)
committerantirez <antirez@gmail.com>
Fri, 18 Dec 2009 12:31:44 +0000 (07:31 -0500)
TODO
redis.c
test-redis.tcl

diff --git a/TODO b/TODO
index 6a7eb20a969dfcc15fcfff4218eea3afdde519e6..b65bd486c6cf2eeb79d88f5d204339e404ff6715 100644 (file)
--- a/TODO
+++ b/TODO
@@ -75,7 +75,7 @@ it's not a guarantee they'll ever get implemented ;)
 * Pattern-matching replication.
 * Don't save empty lists / sets / zsets on disk with snapshotting.
 * Remove keys when a list / set / zset reaches length of 0.
 * Pattern-matching replication.
 * Don't save empty lists / sets / zsets on disk with snapshotting.
 * Remove keys when a list / set / zset reaches length of 0.
-* Add an option to relax the delete-expiring-keys-on-write semantic *denying* replication and AOF when this is on? Can be handy sometimes, when using Redis for non persistent state.
+* Add an option to relax the delete-expiring-keys-on-write semantic *denying* replication and AOF when this is on? Can be handy sometimes, when using Redis for non persistent state, but can create problems. For instance should rename and move also "move" the timeouts? How does this affect other commands?
 
 DOCUMENTATION WISHLIST
 ======================
 
 DOCUMENTATION WISHLIST
 ======================
diff --git a/redis.c b/redis.c
index 459b25c4ef7fc7e140db51e7efef659823e5fddf..274dec7a85a3be63c984783ea27c73026fdf6716 100644 (file)
--- a/redis.c
+++ b/redis.c
@@ -3320,20 +3320,26 @@ static void shutdownCommand(redisClient *c) {
         kill(server.bgsavechildpid,SIGKILL);
         rdbRemoveTempFile(server.bgsavechildpid);
     }
         kill(server.bgsavechildpid,SIGKILL);
         rdbRemoveTempFile(server.bgsavechildpid);
     }
-    /* SYNC SAVE */
-    if (rdbSave(server.dbfilename) == REDIS_OK) {
-        if (server.daemonize)
-            unlink(server.pidfile);
-        redisLog(REDIS_WARNING,"%zu bytes used at exit",zmalloc_used_memory());
-        redisLog(REDIS_WARNING,"Server exit now, bye bye...");
-        exit(1);
+    if (server.appendonly) {
+        /* Append only file: fsync() the AOF and exit */
+        fsync(server.appendfd);
+        exit(0);
     } else {
     } else {
-        /* Ooops.. error saving! The best we can do is to continue operating.
-         * Note that if there was a background saving process, in the next
-         * cron() Redis will be notified that the background saving aborted,
-         * handling special stuff like slaves pending for synchronization... */
-        redisLog(REDIS_WARNING,"Error trying to save the DB, can't exit"); 
-        addReplySds(c,sdsnew("-ERR can't quit, problems saving the DB\r\n"));
+        /* Snapshotting. Perform a SYNC SAVE and exit */
+        if (rdbSave(server.dbfilename) == REDIS_OK) {
+            if (server.daemonize)
+                unlink(server.pidfile);
+            redisLog(REDIS_WARNING,"%zu bytes used at exit",zmalloc_used_memory());
+            redisLog(REDIS_WARNING,"Server exit now, bye bye...");
+            exit(0);
+        } else {
+            /* Ooops.. error saving! The best we can do is to continue operating.
+             * Note that if there was a background saving process, in the next
+             * cron() Redis will be notified that the background saving aborted,
+             * handling special stuff like slaves pending for synchronization... */
+            redisLog(REDIS_WARNING,"Error trying to save the DB, can't exit"); 
+            addReplySds(c,sdsnew("-ERR can't quit, problems saving the DB\r\n"));
+        }
     }
 }
 
     }
 }
 
index 004dc696cfa91673b85f365f17e816dc12e22642..78cc3317e1069469104c0d66ec5d479674230935 100644 (file)
@@ -1184,7 +1184,11 @@ proc main {server port} {
         set _ $err
     } {}
 
         set _ $err
     } {}
 
-    test {ZRANGE and ZREVRANGE} {
+    test {ZRANGE and ZREVRANGE basics} {
+        list [$r zrange ztmp 0 -1] [$r zrevrange ztmp 0 -1]
+    } {{y x z} {z x y}}
+
+    test {ZRANGE and ZREVRANGE stress testing} {
         list [$r zrange ztmp 0 -1] [$r zrevrange ztmp 0 -1]
     } {{y x z} {z x y}}
 
         list [$r zrange ztmp 0 -1] [$r zrevrange ztmp 0 -1]
     } {{y x z} {z x y}}