X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/4cc4d1648b3b4c01bf7568694a88e2ef3f70b2bf..632e4c09acad87b999dd944413ac5b75207de571:/src/rdb.c diff --git a/src/rdb.c b/src/rdb.c index d186a9c5..0d4940d2 100644 --- a/src/rdb.c +++ b/src/rdb.c @@ -308,7 +308,7 @@ int rdbSaveObject(FILE *fp, robj *o) { if ((n = rdbSaveRawString(fp,o->ptr,l)) == -1) return -1; nwritten += n; - } else if (o->encoding == REDIS_ENCODING_RAW) { + } else if (o->encoding == REDIS_ENCODING_SKIPLIST) { zset *zs = o->ptr; dictIterator *di = dictGetIterator(zs->dict); dictEntry *de; @@ -425,7 +425,7 @@ int rdbSave(char *filename) { strerror(errno)); return REDIS_ERR; } - if (fwrite("REDIS0001",9,1,fp) == 0) goto werr; + if (fwrite("REDIS0002",9,1,fp) == 0) goto werr; for (j = 0; j < server.dbnum; j++) { redisDb *db = server.db+j; dict *d = db->dict; @@ -482,6 +482,7 @@ werr: int rdbSaveBackground(char *filename) { pid_t childpid; + long long start; if (server.bgsavechildpid != -1 || server.bgsavethread != (pthread_t) -1) return REDIS_ERR; @@ -493,6 +494,7 @@ int rdbSaveBackground(char *filename) { return dsRdbSaveBackground(filename); } + start = ustime(); if ((childpid = fork()) == 0) { int retval; @@ -503,6 +505,7 @@ int rdbSaveBackground(char *filename) { _exit((retval == REDIS_OK) ? 0 : 1); } else { /* Parent */ + server.stat_fork_time = ustime()-start; if (childpid == -1) { redisLog(REDIS_WARNING,"Can't save in background: fork: %s", strerror(errno)); @@ -875,10 +878,10 @@ robj *rdbLoadObject(int type, FILE *fp) { o->type = REDIS_ZSET; o->encoding = REDIS_ENCODING_ZIPLIST; if (zsetLength(o) > server.zset_max_ziplist_entries) - zsetConvert(o,REDIS_ENCODING_RAW); + zsetConvert(o,REDIS_ENCODING_SKIPLIST); break; default: - redisPanic("Unknown enoding"); + redisPanic("Unknown encoding"); break; } } else { @@ -931,7 +934,7 @@ int rdbLoad(char *filename) { return REDIS_ERR; } rdbver = atoi(buf+5); - if (rdbver != 1) { + if (rdbver < 1 || rdbver > 2) { fclose(fp); redisLog(REDIS_WARNING,"Can't handle RDB format version %d",rdbver); return REDIS_ERR;