incrbyfloat: fix issue #5256 ttl lost after propagate
This commit is contained in:
parent
24044f3356
commit
58554396d6
@ -405,7 +405,7 @@ void decrbyCommand(client *c) {
|
|||||||
|
|
||||||
void incrbyfloatCommand(client *c) {
|
void incrbyfloatCommand(client *c) {
|
||||||
long double incr, value;
|
long double incr, value;
|
||||||
robj *o, *new, *aux;
|
robj *o, *new, *aux1, *aux2;
|
||||||
|
|
||||||
o = lookupKeyWrite(c->db,c->argv[1]);
|
o = lookupKeyWrite(c->db,c->argv[1]);
|
||||||
if (o != NULL && checkType(c,o,OBJ_STRING)) return;
|
if (o != NULL && checkType(c,o,OBJ_STRING)) return;
|
||||||
@ -431,10 +431,13 @@ void incrbyfloatCommand(client *c) {
|
|||||||
/* Always replicate INCRBYFLOAT as a SET command with the final value
|
/* Always replicate INCRBYFLOAT as a SET command with the final value
|
||||||
* in order to make sure that differences in float precision or formatting
|
* in order to make sure that differences in float precision or formatting
|
||||||
* will not create differences in replicas or after an AOF restart. */
|
* will not create differences in replicas or after an AOF restart. */
|
||||||
aux = createStringObject("SET",3);
|
aux1 = createStringObject("SET",3);
|
||||||
rewriteClientCommandArgument(c,0,aux);
|
rewriteClientCommandArgument(c,0,aux1);
|
||||||
decrRefCount(aux);
|
decrRefCount(aux1);
|
||||||
rewriteClientCommandArgument(c,2,new);
|
rewriteClientCommandArgument(c,2,new);
|
||||||
|
aux2 = createStringObject("KEEPTTL",7);
|
||||||
|
rewriteClientCommandArgument(c,3,aux2);
|
||||||
|
decrRefCount(aux2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void appendCommand(client *c) {
|
void appendCommand(client *c) {
|
||||||
|
@ -70,6 +70,13 @@ start_server {tags {"repl"}} {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test {INCRBYFLOAT replication, should not remove expire} {
|
||||||
|
r set test 1 EX 100
|
||||||
|
r incrbyfloat test 0.1
|
||||||
|
after 1000
|
||||||
|
assert_equal [$A debug digest] [$B debug digest]
|
||||||
|
}
|
||||||
|
|
||||||
test {BRPOPLPUSH replication, when blocking against empty list} {
|
test {BRPOPLPUSH replication, when blocking against empty list} {
|
||||||
set rd [redis_deferring_client]
|
set rd [redis_deferring_client]
|
||||||
$rd brpoplpush a b 5
|
$rd brpoplpush a b 5
|
||||||
|
Loading…
x
Reference in New Issue
Block a user