From af1e81d9c36764ff12bb431eda778457a31c7960 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Boros?= Date: Thu, 26 Aug 2021 18:59:08 +0400 Subject: [PATCH] fix: add missing commands to prefix Add missing DEL, RPUSH, RPOP and SREM commands to the list of commands to prefix. Also, this commit refactors the prefixing logic a bit to make it simpler. --- kombu/transport/redis.py | 9 +++++---- t/unit/transport/test_redis.py | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/kombu/transport/redis.py b/kombu/transport/redis.py index 02d06b458..32a5d4ec5 100644 --- a/kombu/transport/redis.py +++ b/kombu/transport/redis.py @@ -197,7 +197,10 @@ class GlobalKeyPrefixMixin: "LLEN", "LPUSH", "PUBLISH", + "RPUSH", + "RPOP", "SADD", + "SREM", "SET", "SMEMBERS", "ZADD", @@ -206,6 +209,7 @@ class GlobalKeyPrefixMixin: ] PREFIXED_COMPLEX_COMMANDS = { + "DEL": {"args_start": 0, "args_end": None}, "BRPOP": {"args_start": 0, "args_end": -1}, "EVALSHA": {"args_start": 2, "args_end": 3}, } @@ -222,13 +226,10 @@ def _prefix_args(self, args): args_end = self.PREFIXED_COMPLEX_COMMANDS[command]["args_end"] pre_args = args[:args_start] if args_start > 0 else [] + post_args = [] if args_end is not None: post_args = args[args_end:] - elif args_end < 0: - post_args = args[len(args):] - else: - post_args = [] args = pre_args + [ self.global_keyprefix + str(arg) diff --git a/t/unit/transport/test_redis.py b/t/unit/transport/test_redis.py index 3e1f76f58..0f585ca9e 100644 --- a/t/unit/transport/test_redis.py +++ b/t/unit/transport/test_redis.py @@ -1561,6 +1561,21 @@ def test_prefix_simple_args(self): f"{self.global_keyprefix}fake_key" ] + def test_prefix_delete_args(self): + prefixed_args = self.mixin._prefix_args([ + "DEL", + "fake_key", + "fake_key2", + "fake_key3" + ]) + + assert prefixed_args == [ + "DEL", + f"{self.global_keyprefix}fake_key", + f"{self.global_keyprefix}fake_key2", + f"{self.global_keyprefix}fake_key3", + ] + def test_prefix_brpop_args(self): prefixed_args = self.mixin._prefix_args([ "BRPOP",