diff --git a/src/server.cpp b/src/server.cpp index b357507e7..dd24a84ef 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -1177,6 +1177,10 @@ struct redisCommand redisCommandTable[] = { {"failover",failoverCommand,-1, "admin no-script ok-stale", + 0,NULL,0,0,0,0,0,0}, + + {"lfence", lfenceCommand,1, + "read-only random ok-stale", 0,NULL,0,0,0,0,0,0} }; @@ -4661,6 +4665,11 @@ void rejectCommand(client *c, robj *reply, int severity = ERR_CRITICAL) { } } +void lfenceCommand(client *c) { + c->mvccCheckpoint = getMvccTstamp(); + addReply(c, shared.ok); +} + void rejectCommandFormat(client *c, const char *fmt, ...) { if (c->cmd) c->cmd->rejected_calls++; flagTransaction(c); diff --git a/src/server.h b/src/server.h index d6959a131..0064f5996 100644 --- a/src/server.h +++ b/src/server.h @@ -3784,6 +3784,7 @@ void hrenameCommand(client *c); void stralgoCommand(client *c); void resetCommand(client *c); void failoverCommand(client *c); +void lfenceCommand(client *c); int FBrokenLinkToMaster(); diff --git a/tests/support/util.tcl b/tests/support/util.tcl index dd843110d..156f6f811 100644 --- a/tests/support/util.tcl +++ b/tests/support/util.tcl @@ -110,6 +110,7 @@ proc wait_for_ofs_sync {r1 r2} { } else { fail "replica didn't sync in time" } + $r2 lfence } proc wait_done_loading r {