From 9cfe76b81d016bdc8bd3cc6d7cc7bae4a48dc8bb Mon Sep 17 00:00:00 2001 From: "bodong.ybd" Date: Fri, 7 Feb 2025 17:55:12 +0800 Subject: [PATCH 1/3] Fix client trackinginfo coredump when tacking off by default This pr will fix #1683 After https://github.com/valkey-io/valkey/pull/1405, cause this coredump. Signed-off-by: bodong.ybd --- src/networking.c | 2 +- tests/unit/tracking.tcl | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/networking.c b/src/networking.c index 7701ad88cb..1a26aa4a2b 100644 --- a/src/networking.c +++ b/src/networking.c @@ -4100,7 +4100,7 @@ void clientTrackingInfoCommand(client *c) { /* Prefixes */ addReplyBulkCString(c, "prefixes"); - if (c->pubsub_data->client_tracking_prefixes) { + if (c->pubsub_data && c->pubsub_data->client_tracking_prefixes) { addReplyArrayLen(c, raxSize(c->pubsub_data->client_tracking_prefixes)); raxIterator ri; raxStart(&ri, c->pubsub_data->client_tracking_prefixes); diff --git a/tests/unit/tracking.tcl b/tests/unit/tracking.tcl index 1d1ad4044b..5a0f05c561 100644 --- a/tests/unit/tracking.tcl +++ b/tests/unit/tracking.tcl @@ -865,6 +865,16 @@ start_server {tags {"tracking network logreqres:skip"}} { # Just some extra coverage for --log-req-res, because we do not # run the full tracking unit in that mode start_server {tags {"tracking network"}} { + test {CLIENT TRACKINGINFO when start} { + set res [r client trackinginfo] + set flags [dict get $res flags] + assert_equal {off} $flags + set redirect [dict get $res redirect] + assert_equal {-1} $redirect + set prefixes [dict get $res prefixes] + assert_equal {} $prefixes + } + test {Coverage: Basic CLIENT CACHING} { set rd_redirection [valkey_deferring_client] $rd_redirection client id From de7a07e3078b679cbf874c9187d3870fa2cdd3b2 Mon Sep 17 00:00:00 2001 From: "bodong.ybd" Date: Fri, 7 Feb 2025 22:54:18 +0800 Subject: [PATCH 2/3] Update src/networking.c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Viktor Söderqvist Signed-off-by: bodong.ybd --- src/networking.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/networking.c b/src/networking.c index 1a26aa4a2b..fbf03f280d 100644 --- a/src/networking.c +++ b/src/networking.c @@ -4100,7 +4100,8 @@ void clientTrackingInfoCommand(client *c) { /* Prefixes */ addReplyBulkCString(c, "prefixes"); - if (c->pubsub_data && c->pubsub_data->client_tracking_prefixes) { + if (c->flag.tracking) { + serverAssert(c->pubsub_data && c->pubsub_data->client_tracking_prefixes); addReplyArrayLen(c, raxSize(c->pubsub_data->client_tracking_prefixes)); raxIterator ri; raxStart(&ri, c->pubsub_data->client_tracking_prefixes); From 8c2737b869200a99a08797f58aa34c01121bd9c4 Mon Sep 17 00:00:00 2001 From: ranshid <88133677+ranshid@users.noreply.github.com> Date: Sun, 9 Feb 2025 17:32:15 +0200 Subject: [PATCH 3/3] Update src/networking.c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Viktor Söderqvist Signed-off-by: ranshid <88133677+ranshid@users.noreply.github.com> Signed-off-by: bodong.ybd --- src/networking.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/networking.c b/src/networking.c index fbf03f280d..7f419afd8f 100644 --- a/src/networking.c +++ b/src/networking.c @@ -4100,8 +4100,7 @@ void clientTrackingInfoCommand(client *c) { /* Prefixes */ addReplyBulkCString(c, "prefixes"); - if (c->flag.tracking) { - serverAssert(c->pubsub_data && c->pubsub_data->client_tracking_prefixes); + if (c->flag.tracking && c->pubsub_data->client_tracking_prefixes) { addReplyArrayLen(c, raxSize(c->pubsub_data->client_tracking_prefixes)); raxIterator ri; raxStart(&ri, c->pubsub_data->client_tracking_prefixes);