Permalink
Browse files

CONFIG now can change appendfsync policy at run time

  • Loading branch information...
1 parent a34e0a2 commit 1b67773229da874edd04c317a47470739d2b68e4 @antirez committed May 10, 2010
Showing with 28 additions and 1 deletion.
  1. +24 −1 redis.c
  2. +4 −0 redis.conf
View
25 redis.c
@@ -1635,7 +1635,7 @@ static void initServerConfig() {
server.glueoutputbuf = 1;
server.daemonize = 0;
server.appendonly = 0;
- server.appendfsync = APPENDFSYNC_ALWAYS;
+ server.appendfsync = APPENDFSYNC_EVERYSEC;
server.lastfsync = time(NULL);
server.appendfd = -1;
server.appendseldb = -1; /* Make sure the first time will not match */
@@ -9683,6 +9683,16 @@ static void configSetCommand(redisClient *c) {
server.masterauth = zstrdup(o->ptr);
} else if (!strcasecmp(c->argv[2]->ptr,"maxmemory")) {
server.maxmemory = strtoll(o->ptr, NULL, 10);
+ } else if (!strcasecmp(c->argv[2]->ptr,"appendfsync")) {
+ if (!strcasecmp(o->ptr,"no")) {
+ server.appendfsync = APPENDFSYNC_NO;
+ } else if (!strcasecmp(o->ptr,"everysec")) {
+ server.appendfsync = APPENDFSYNC_EVERYSEC;
+ } else if (!strcasecmp(o->ptr,"always")) {
+ server.appendfsync = APPENDFSYNC_ALWAYS;
+ } else {
+ goto badfmt;
+ }
} else if (!strcasecmp(c->argv[2]->ptr,"save")) {
int vlen, j;
sds *v = sdssplitlen(o->ptr,sdslen(o->ptr)," ",1,&vlen);
@@ -9768,6 +9778,19 @@ static void configGetCommand(redisClient *c) {
addReplyBulkCString(c,buf);
matches++;
}
+ if (stringmatch(pattern,"appendfsync",0)) {
+ char *policy;
+
+ switch(server.appendfsync) {
+ case APPENDFSYNC_NO: policy = "no"; break;
+ case APPENDFSYNC_EVERYSEC: policy = "everysec"; break;
+ case APPENDFSYNC_ALWAYS: policy = "always"; break;
+ default: policy = "unknown"; break; /* too harmless to panic */
+ }
+ addReplyBulkCString(c,"appendfsync");
+ addReplyBulkCString(c,policy);
+ matches++;
+ }
if (stringmatch(pattern,"save",0)) {
sds buf = sdsempty();
int j;
View
@@ -112,6 +112,10 @@ dir ./
#
# This should stay commented out for backward compatibility and because most
# people do not need auth (e.g. they run their own servers).
+#
+# Warning: since Redis is pretty fast an outside user can try up to
+# 150k passwords per second against a good box. This means that you should
+# use a very strong password otherwise it will be very easy to break.
#
# requirepass foobared

0 comments on commit 1b67773

Please sign in to comment.