From c6d385a63e606e55d30b18205e9cbded1b286706 Mon Sep 17 00:00:00 2001 From: Nedyalko Dyakov Date: Mon, 16 Jun 2025 18:27:57 +0300 Subject: [PATCH] fix(txpipeline): should return error on multi/exec on multiple slots --- osscluster.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/osscluster.go b/osscluster.go index a68f7eab..06a58856 100644 --- a/osscluster.go +++ b/osscluster.go @@ -1504,6 +1504,16 @@ func (c *ClusterClient) processTxPipeline(ctx context.Context, cmds []Cmder) err } cmdsMap := c.mapCmdsBySlot(cmds) + // TxPipeline does not support cross slot transaction. + if len(cmdsMap) > 1 { + err := fmt.Errorf("redis: CROSSSLOT Keys in request don't hash to the same slot") + setCmdsErr(cmds, err) + return err + } + if len(cmdsMap) == 0 { + return nil + } + for slot, cmds := range cmdsMap { node, err := state.slotMasterNode(slot) if err != nil {