Skip to content
This repository was archived by the owner on Jun 13, 2025. It is now read-only.

Commit 392e9d8

Browse files
committed
update to only delete no ttl keys
1 parent e92278a commit 392e9d8

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

core/management/commands/delete_rate_limit_keys.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@ def handle(self, *args, **options):
1919

2020
try:
2121
for key in redis.scan_iter(path):
22-
print(f"Deleting key: {key.decode('utf-8')}")
23-
redis.delete(key)
22+
# -1 means the key has no expiry
23+
if redis.ttl(key) == -1:
24+
print(f"Deleting key: {key.decode('utf-8')}")
25+
redis.delete(key)
2426
except Exception as e:
2527
print("Error occurred when deleting redis keys")
2628
print(e)

core/tests/test_management_commands.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ def test_update_gitlab_webhook_command(mocker):
8585
def test_delete_rate_limit_keys_user_id():
8686
redis = get_redis_connection()
8787
redis.set("rl-user:1", 1)
88-
redis.set("rl-user:2", 1)
88+
redis.set("rl-user:2", 1, ex=5000)
8989
redis.set("rl-ip:1", 1)
9090

9191
call_command(
@@ -95,27 +95,29 @@ def test_delete_rate_limit_keys_user_id():
9595
)
9696

9797
assert redis.get("rl-user:1") is None
98-
assert redis.get("rl-user:2") is None
98+
assert redis.get("rl-user:2") is not None
9999
assert redis.get("rl-ip:1") is not None
100100

101-
# Get rid of lingering key
101+
# Get rid of lingering keys
102102
redis.delete("rl-ip:1")
103+
redis.delete("rl-user:2")
103104

104105

105106
@pytest.mark.django_db
106107
def test_delete_rate_limit_keys_ip_option():
107108
redis = get_redis_connection()
108109
redis.set("rl-ip:1", 1)
109-
redis.set("rl-ip:2", 1)
110+
redis.set("rl-ip:2", 1, ex=5000)
110111
redis.set("rl-user:1", 1)
111112

112113
call_command(
113114
"delete_rate_limit_keys", stdout=StringIO(), stderr=StringIO(), ip=True
114115
)
115116

116117
assert redis.get("rl-ip:1") is None
117-
assert redis.get("rl-ip:2") is None
118+
assert redis.get("rl-ip:2") is not None
118119
assert redis.get("rl-user:1") is not None
119120

120-
# Get rid of lingering key
121+
# Get rid of lingering keys
121122
redis.delete("rl-user:1")
123+
redis.delete("rl-ip:2")

0 commit comments

Comments
 (0)