From af0a4fe20771603f0eab75a1f60748d124cf33c3 Mon Sep 17 00:00:00 2001 From: sundb Date: Thu, 29 Dec 2022 00:15:50 +0800 Subject: [PATCH] Remove unnecessary updateClientMemUsageAndBucket() when feeding monitors (#11657) This call is introduced in #8687, but became irrelevant in #11348, and is currently a no-op. The fact is that #11348 an unintended side effect, which is that even if the client eviction config is enabled, there are certain types of clients for which memory consumption is not accurately tracked, and so unlike normal clients, their memory isn't reported correctly in INFO. --- src/replication.c | 1 - src/server.c | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/replication.c b/src/replication.c index 797f6518d..1b2ef6731 100644 --- a/src/replication.c +++ b/src/replication.c @@ -593,7 +593,6 @@ void replicationFeedMonitors(client *c, list *monitors, int dictid, robj **argv, while((ln = listNext(&li))) { client *monitor = ln->value; addReply(monitor,cmdobj); - updateClientMemUsageAndBucket(c); } decrRefCount(cmdobj); } diff --git a/src/server.c b/src/server.c index dee7c402a..380b20d32 100644 --- a/src/server.c +++ b/src/server.c @@ -897,6 +897,12 @@ void removeClientFromMemUsageBucket(client *c, int allow_eviction) { * together clients consuming about the same amount of memory and can quickly * free them in case we reach maxmemory-clients (client eviction). * + * Note: This function filters clients of type monitor, master or replica regardless + * of whether the eviction is enabled or not, so the memory usage we get from these + * types of clients via the INFO command may be out of date. If someday we wanna + * improve that to make monitors' memory usage more accurate, we need to re-add this + * function call to `replicationFeedMonitors()`. + * * returns 1 if client eviction for this client is allowed, 0 otherwise. */ int updateClientMemUsageAndBucket(client *c) {