From ce96c69719661a80babe3f6321e9116387f43c49 Mon Sep 17 00:00:00 2001 From: John Sully Date: Wed, 24 Jul 2019 22:49:30 -0400 Subject: [PATCH] RREPLAY failures should be logged Former-commit-id: b0a0f03b96b44005e905f5d46985d76d52a712ec --- src/replication.cpp | 7 ++++++- src/server.cpp | 1 + src/server.h | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/replication.cpp b/src/replication.cpp index 4118087c0..461a2fd92 100644 --- a/src/replication.cpp +++ b/src/replication.cpp @@ -3267,9 +3267,14 @@ void replicaReplayCommand(client *c) cFake->puser = c->puser; cFake->querybuf = sdscatsds(cFake->querybuf,(sds)ptrFromObj(c->argv[2])); selectDb(cFake, c->db->id); + auto ccmdPrev = serverTL->commandsExecuted; processInputBuffer(cFake, (CMD_CALL_FULL & (~CMD_CALL_PROPAGATE))); + bool fExec = ccmdPrev != serverTL->commandsExecuted; cFake->lock.unlock(); - addReply(c, shared.ok); + if (fExec) + addReply(c, shared.ok); + else + addReplyError(c, "command did not execute"); freeClient(cFake); serverTL->current_client = current_clientSave; diff --git a/src/server.cpp b/src/server.cpp index 4ee6922d2..1aca94717 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -3348,6 +3348,7 @@ void call(client *c, int flags) { dirty = g_pserver->dirty; start = ustime(); c->cmd->proc(c); + serverTL->commandsExecuted++; duration = ustime()-start; dirty = g_pserver->dirty-dirty; if (dirty < 0) dirty = 0; diff --git a/src/server.h b/src/server.h index d057765f2..d2aa14637 100644 --- a/src/server.h +++ b/src/server.h @@ -1159,6 +1159,7 @@ struct redisServerThreadVars { client *lua_client = nullptr; /* The "fake client" to query Redis from Lua */ struct fastlock lockPendingWrite; char neterr[ANET_ERR_LEN]; /* Error buffer for anet.c */ + long unsigned commandsExecuted = 0; }; struct redisMaster {