Skip to content

Commit 7a59e94

Browse files
authored
ref(redis): Do not use redis-blaster for auth idpmigration (#102319)
<!-- Describe your PR here. --> Remove another place where we still use redis-blaster.
1 parent 2fcccf6 commit 7a59e94

File tree

3 files changed

+14
-10
lines changed

3 files changed

+14
-10
lines changed

src/sentry/auth/idpmigration.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55
from typing import Any
66

77
import orjson
8+
from django.conf import settings
89
from django.urls import reverse
9-
from rb.clients import LocalClient
10+
from sentry_redis_tools.clients import RedisCluster, StrictRedis
1011

1112
from sentry import options
1213
from sentry.models.authprovider import AuthProvider
@@ -17,7 +18,6 @@
1718
from sentry.utils.http import absolute_uri
1819
from sentry.utils.security import get_secure_token
1920

20-
_REDIS_KEY = "verificationKeyStorage"
2121
_TTL = timedelta(minutes=10)
2222
SSO_VERIFICATION_KEY = "confirm_account_verification_key"
2323

@@ -48,8 +48,8 @@ def send_one_time_account_confirm_link(
4848
return link
4949

5050

51-
def get_redis_cluster() -> LocalClient:
52-
return redis.clusters.get("default").get_local_client_for_key(_REDIS_KEY)
51+
def _get_redis_client() -> RedisCluster[str] | StrictRedis[str]:
52+
return redis.redis_clusters.get(settings.SENTRY_AUTH_IDPMIGRATION_REDIS_CLUSTER)
5353

5454

5555
# Helper function for serializing named tuples with orjson.
@@ -96,7 +96,7 @@ def send_confirm_email(self) -> None:
9696
metrics.incr("idpmigration.confirm_link_sent", sample_rate=1.0)
9797

9898
def store_in_redis(self) -> None:
99-
cluster = get_redis_cluster()
99+
client = _get_redis_client()
100100

101101
member = organization_service.check_membership_by_id(
102102
organization_id=self.organization.id, user_id=self.user.id
@@ -110,17 +110,17 @@ def store_in_redis(self) -> None:
110110
"identity_id": self.identity_id,
111111
"provider": self.provider.provider,
112112
}
113-
cluster.setex(
113+
client.setex(
114114
self.verification_key,
115115
int(_TTL.total_seconds()),
116116
orjson.dumps(verification_value, default=_serialize_named_tuple).decode(),
117117
)
118118

119119

120120
def get_verification_value_from_key(key: str) -> dict[str, Any] | None:
121-
cluster = get_redis_cluster()
121+
client = _get_redis_client()
122122
verification_key = f"auth:one-time-key:{key}"
123-
verification_str = cluster.get(verification_key)
123+
verification_str = client.get(verification_key)
124124
if verification_str is None:
125125
metrics.incr("idpmigration.confirmation_failure", sample_rate=1.0)
126126
return None

src/sentry/conf/server.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,7 @@ def env(
193193
SENTRY_WEEKLY_REPORTS_REDIS_CLUSTER = "default"
194194
SENTRY_HYBRIDCLOUD_DELETIONS_REDIS_CLUSTER = "default"
195195
SENTRY_SESSION_STORE_REDIS_CLUSTER = "default"
196+
SENTRY_AUTH_IDPMIGRATION_REDIS_CLUSTER = "default"
196197

197198
# Hosts that are allowed to use system token authentication.
198199
# http://en.wikipedia.org/wiki/Reserved_IP_addresses

tests/sentry/auth/test_idpmigration.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import re
2+
from typing import cast
23

34
from django.urls import reverse
45

@@ -31,7 +32,8 @@ def test_send_one_time_account_confirm_link(self) -> None:
3132
)
3233
assert re.match(r"auth:one-time-key:\w{32}", link.verification_key)
3334

34-
value = json.loads(idpmigration.get_redis_cluster().get(link.verification_key))
35+
value = json.loads(cast(str, idpmigration._get_redis_client().get(link.verification_key)))
36+
3537
assert value["user_id"] == self.user.id
3638
assert value["email"] == self.email
3739
assert value["member_id"] == om.id
@@ -44,7 +46,8 @@ def test_send_without_org_membership(self) -> None:
4446
self.user, self.org, self.provider, self.email, self.IDENTITY_ID
4547
)
4648

47-
value = json.loads(idpmigration.get_redis_cluster().get(link.verification_key))
49+
value = json.loads(cast(str, idpmigration._get_redis_client().get(link.verification_key)))
50+
4851
assert value["user_id"] == self.user.id
4952
assert value["email"] == self.email
5053
assert value["member_id"] is None

0 commit comments

Comments
 (0)