From 79fda18d2b956ac97f58e3a2f18dce3b6577bee4 Mon Sep 17 00:00:00 2001 From: Robey Pointer Date: Thu, 19 Aug 2010 16:35:59 -0700 Subject: [PATCH] add "dumpcore" config to avoid setting up the segv handler if you don't want it. --- src/config.c | 4 ++++ src/redis.c | 7 +++++-- src/redis.h | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/config.c b/src/config.c index 6d946ee0c..7dd84e810 100644 --- a/src/config.c +++ b/src/config.c @@ -141,6 +141,10 @@ void loadServerConfig(char *filename) { if ((server.activerehashing = yesnotoi(argv[1])) == -1) { err = "argument must be 'yes' or 'no'"; goto loaderr; } + } else if (!strcasecmp(argv[0],"dumpcore") && argc == 2) { + if ((server.dumpcore = yesnotoi(argv[1])) == -1) { + err = "argument must be 'yes' or 'no'"; goto loaderr; + } } else if (!strcasecmp(argv[0],"daemonize") && argc == 2) { if ((server.daemonize = yesnotoi(argv[1])) == -1) { err = "argument must be 'yes' or 'no'"; goto loaderr; diff --git a/src/redis.c b/src/redis.c index 3cf5a0dbd..37c8717e1 100644 --- a/src/redis.c +++ b/src/redis.c @@ -501,7 +501,7 @@ int serverCron(struct aeEventLoop *eventLoop, long long id, void *clientData) { * This is not precise but we don't need at all precision, but just * something statistically reasonable. */ - server.lruclock = (time(NULL)/60)&((1<<21)-1); + server.lruclock = (server.unixtime/60)&((1<<21)-1); /* We received a SIGTERM, shutting down here in a safe way, as it is * not ok doing so inside the signal handler. */ @@ -729,6 +729,7 @@ void initServerConfig() { server.requirepass = NULL; server.rdbcompression = 1; server.activerehashing = 1; + server.dumpcore = 0; server.maxclients = 0; server.blpop_blocked_clients = 0; server.maxmemory = 0; @@ -770,7 +771,9 @@ void initServer() { signal(SIGHUP, SIG_IGN); signal(SIGPIPE, SIG_IGN); - setupSigSegvAction(); + if (!server.dumpcore) { + setupSigSegvAction(); + } server.mainthread = pthread_self(); server.devnull = fopen("/dev/null","w"); diff --git a/src/redis.h b/src/redis.h index 781fb209e..e52688a95 100644 --- a/src/redis.h +++ b/src/redis.h @@ -371,6 +371,7 @@ struct redisServer { char *requirepass; int rdbcompression; int activerehashing; + int dumpcore; /* Replication related */ int isslave; char *masterauth;