From 7e0fe49295593ebce7de9516e269f316209e224f Mon Sep 17 00:00:00 2001 From: David Herberth Date: Wed, 28 Aug 2024 11:54:56 +0200 Subject: [PATCH] ref(relay): Only update internal state when it changed (#76594) Removes the `is_internal` update from the `relay_from_id` function, to move the check to the endpoint (where it already was anyways). All additional uses of `relay_from_id` don't seem to care about the internal state, except authentication. So that seems fine, also this behaviour does seem more consistent. --- src/sentry/api/authentication.py | 4 +++- src/sentry/api/endpoints/relay/register_response.py | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/sentry/api/authentication.py b/src/sentry/api/authentication.py index 42f3d8d9c4a9c0..46e337e2c455ea 100644 --- a/src/sentry/api/authentication.py +++ b/src/sentry/api/authentication.py @@ -132,7 +132,6 @@ def relay_from_id(request: Request, relay_id: str) -> tuple[Relay | None, bool]: else: try: relay = Relay.objects.get(relay_id=relay_id) - relay.is_internal = is_internal_relay(request, relay.public_key) return relay, False # a Relay from the database except Relay.DoesNotExist: return None, False # no Relay found @@ -223,6 +222,9 @@ def authenticate_credentials( if relay is None: raise AuthenticationFailed("Unknown relay") + if not static: + relay.is_internal = is_internal_relay(request, relay.public_key) + try: data = relay.public_key_object.unpack(request.body, relay_sig, max_age=60 * 5) request.relay = relay diff --git a/src/sentry/api/endpoints/relay/register_response.py b/src/sentry/api/endpoints/relay/register_response.py index 0c46ea568ca283..18f018ab90d23c 100644 --- a/src/sentry/api/endpoints/relay/register_response.py +++ b/src/sentry/api/endpoints/relay/register_response.py @@ -90,7 +90,7 @@ def post(self, request: Request) -> Response: relay = Relay.objects.create( relay_id=relay_id, public_key=public_key, is_internal=is_internal ) - else: + elif relay.is_internal != is_internal: # update the internal flag in case it is changed relay.is_internal = is_internal relay.save()