From f3aa422a3f73432d202da76348d66784d65f3594 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: 08b6a04055e950e53f043391ec9f9a09f654b1ee --- 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 e19daa267..736b2ccec 100644 --- a/src/replication.cpp +++ b/src/replication.cpp @@ -3279,9 +3279,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 2d9627c0f..9866117aa 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -3347,6 +3347,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 f350410d0..52c9877e6 100644 --- a/src/server.h +++ b/src/server.h @@ -1403,6 +1403,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 {