redis/tests/unit/cluster
debing.sun 6f0ddc9d92
Pass extensions to node if extension processing is handled by it (#13465)
This PR is based on the commits from PR
https://github.com/valkey-io/valkey/pull/52.
Ref: https://github.com/redis/redis/pull/12760
Close https://github.com/redis/redis/issues/13401
This PR will replace https://github.com/redis/redis/pull/13449

Fixes compatibilty of Redis cluster (7.2 - extensions enabled by
default) with older Redis cluster (< 7.0 - extensions not handled) .

With some of the extensions enabled by default in 7.2 version, new nodes
running 7.2 and above start sending out larger clusterbus message
payload including the ping extensions. This caused an incompatibility
with node running engine versions < 7.0. Old nodes (< 7.0) would receive
the payload from new nodes (> 7.2) would observe a payload length
(totlen) > (estlen) and would perform an early exit and won't process
the message.

This fix does the following things:
1. Always set `CLUSTERMSG_FLAG0_EXT_DATA`, because during the meet
phase, we do not know whether the connected node supports ext data, we
need to make sure that it knows and send back its ext data if it has.
2. If another node does not support ext data, we will not send it ext
data to avoid the handshake failure due to the incorrect payload length.

Note: A successful `PING`/`PONG` is required as a sender for a given
node to be marked as `CLUSTERMSG_FLAG0_EXT_DATA` and then extensions
message
will be sent to it. This could cause a slight delay in receiving the
extensions message(s).

---------

Signed-off-by: Harkrishn Patro <harkrisp@amazon.com>
Co-authored-by: Harkrishn Patro <harkrisp@amazon.com>

---------

Signed-off-by: Harkrishn Patro <harkrisp@amazon.com>
Co-authored-by: Harkrishn Patro <harkrisp@amazon.com>
2024-08-08 10:48:03 +08:00
..
announced-endpoints.tcl Add announced-endpoints test to all_tests and fix tls related tests (#12927) 2024-01-09 18:18:59 -08:00
cli.tcl redis-cli adds -4 / -6 options to determine IPV4 / IPV6 priority in DNS lookup (#11315) 2023-12-24 10:40:34 +02:00
cluster-response-tls.tcl Support TLS service when "tls-cluster" is not enabled and persist both plain and TLS port in nodes.conf (#12233) 2023-06-26 07:43:38 -07:00
failure-marking.tcl When one shard, sole primary node marks potentially failed replica as FAIL instead of PFAIL (#12824) 2024-01-11 15:48:19 -08:00
hostnames.tcl Pass extensions to node if extension processing is handled by it (#13465) 2024-08-08 10:48:03 +08:00
human-announced-nodename.tcl Make nodename test more consistent (#12330) 2023-06-20 18:00:55 -07:00
links.tcl Attempt to solve MacOS CI issues in GH Actions (#12013) 2023-04-12 09:19:21 +03:00
misc.tcl Exclude aux fields from "cluster nodes" and "cluster replicas" output (#12166) 2023-05-23 18:32:37 +03:00
multi-slot-operations.tcl Adding missing test cases for Addslot Command (#12288) 2023-06-11 08:36:26 +03:00
scripting.tcl fix scripts access wrong slot if they disagree with pre-declared keys (#12906) 2024-01-15 09:57:12 +08:00
sharded-pubsub.tcl Have consistent behavior of SPUBLISH within multi/exec like regular command (#13276) 2024-05-21 09:25:13 +08:00
slot-ownership.tcl bugfix:del keys in slot replicate to replica, and trigger other invalidations (#11084) 2022-08-28 11:37:26 +03:00