summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2014-04-14 15:56:30 +0200
committerantirez <antirez@gmail.com>2014-04-14 15:57:19 +0200
commit3bc35f9ce917c630c401b2ed0d56b3a51658a5e2 (patch)
treec6f8080955b33b44addd80c0ac009faa46c0a0ab
parentba0afb45661d1ab4d607782cd8afee0dfa3eb893 (diff)
downloadredis-3bc35f9ce917c630c401b2ed0d56b3a51658a5e2.tar.gz
Correctly replicate PFDEBUG GETREG.
Even if it is a debugging command, make sure that when it forces a change in encoding, the command is propagated.
-rw-r--r--src/hyperloglog.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/hyperloglog.c b/src/hyperloglog.c
index b7c4b6cfe..fe0a5d7a0 100644
--- a/src/hyperloglog.c
+++ b/src/hyperloglog.c
@@ -1306,9 +1306,12 @@ void pfdebugCommand(redisClient *c) {
if (!strcasecmp(cmd,"getreg")) {
if (c->argc != 3) goto arityerr;
- if (hllSparseToDense(o) == REDIS_ERR) {
- addReplyError(c,"HLL sparse encoding is corrupted");
- return;
+ if (hdr->encoding == HLL_SPARSE) {
+ if (hllSparseToDense(o) == REDIS_ERR) {
+ addReplyError(c,"HLL sparse encoding is corrupted");
+ return;
+ }
+ server.dirty++; /* Force propagation on encoding change. */
}
hdr = o->ptr;