tracking pending invalidation message of flushdb sent by (#11068)

trackingHandlePendingKeyInvalidations should use proto.

(cherry picked from commit 61451b02cb)
This commit is contained in:
Huang Zhw
2022-12-12 17:02:54 +02:00
committed by Oran Agra
parent fbcd591b28
commit 2cd5f6f3ff
2 changed files with 12 additions and 6 deletions
+11 -5
View File
@@ -416,9 +416,15 @@ void trackingHandlePendingKeyInvalidations() {
robj *key = listNodeValue(ln);
/* current_client maybe freed, so we need to send invalidation
* message only when current_client is still alive */
if (server.current_client != NULL)
sendTrackingMessage(server.current_client,(char *)key->ptr,sdslen(key->ptr),0);
decrRefCount(key);
if (server.current_client != NULL) {
if (key != NULL) {
sendTrackingMessage(server.current_client,(char *)key->ptr,sdslen(key->ptr),0);
} else {
sendTrackingMessage(server.current_client,shared.null[server.current_client->resp]->ptr,
sdslen(shared.null[server.current_client->resp]->ptr),1);
}
}
if (key != NULL) decrRefCount(key);
}
listEmpty(server.tracking_pending_keys);
}
@@ -448,8 +454,8 @@ void trackingInvalidateKeysOnFlush(int async) {
client *c = listNodeValue(ln);
if (c->flags & CLIENT_TRACKING) {
if (c == server.current_client) {
incrRefCount(shared.null[c->resp]);
listAddNodeTail(server.tracking_pending_keys,shared.null[c->resp]);
/* We use a special NULL to indicate that we should send null */
listAddNodeTail(server.tracking_pending_keys,NULL);
} else {
sendTrackingMessage(c,shared.null[c->resp]->ptr,sdslen(shared.null[c->resp]->ptr),1);
}
+1 -1
View File
@@ -529,7 +529,7 @@ start_server {tags {"tracking network"}} {
assert_equal $res {OK}
# Consume the invalidate message which is after command response
r read
} {invalidate *_*}
} {invalidate {}}
# Keys are defined to be evicted 100 at a time by default.
# If after eviction the number of keys still surpasses the limit