diff options
author | antirez <antirez@gmail.com> | 2013-02-22 10:15:32 +0100 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2013-02-22 10:15:32 +0100 |
commit | d04770988d5cbbf5134935245ea720d176a11fd4 (patch) | |
tree | 00dee201666db5b790392eaf1aed41cbe5ae513b /src/db.c | |
parent | efe51dfff51caf81c4731ea41cb14bfc55b411f2 (diff) | |
download | redis-d04770988d5cbbf5134935245ea720d176a11fd4.tar.gz |
Cluster: empty the internal sorted set mapping keys to slots on FLUSHDB/ALL.
Diffstat (limited to 'src/db.c')
-rw-r--r-- | src/db.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -34,6 +34,7 @@ void SlotToKeyAdd(robj *key); void SlotToKeyDel(robj *key); +void SlotToKeyFlush(void); /*----------------------------------------------------------------------------- * C-level DB API @@ -213,12 +214,14 @@ void flushdbCommand(redisClient *c) { signalFlushedDb(c->db->id); dictEmpty(c->db->dict); dictEmpty(c->db->expires); + if (server.cluster_enabled) SlotToKeyFlush(); addReply(c,shared.ok); } void flushallCommand(redisClient *c) { signalFlushedDb(-1); server.dirty += emptyDb(); + if (server.cluster_enabled) SlotToKeyFlush(); addReply(c,shared.ok); if (server.rdb_child_pid != -1) { kill(server.rdb_child_pid,SIGUSR1); @@ -755,6 +758,11 @@ void SlotToKeyDel(robj *key) { zslDelete(server.cluster->slots_to_keys,hashslot,key); } +void SlotToKeyFlush(void) { + zslFree(server.cluster->slots_to_keys); + server.cluster->slots_to_keys = zslCreate(); +} + unsigned int GetKeysInSlot(unsigned int hashslot, robj **keys, unsigned int count) { zskiplistNode *n; zrangespec range; |