From e31fa497a30f997798bf2e26459d794874279705 Mon Sep 17 00:00:00 2001 From: David Herberth Date: Tue, 27 Aug 2024 14:24:35 +0200 Subject: [PATCH] ref(relay): Only update internal state when it changed --- src/sentry/api/authentication.py | 6 ++++-- src/sentry/api/endpoints/relay/register_response.py | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/sentry/api/authentication.py b/src/sentry/api/authentication.py index 42f3d8d9c4a9c0..5297524a0d4fe0 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 @@ -218,11 +217,14 @@ def authenticate_credentials( if request is None: raise AuthenticationFailed("missing request") - relay, static = relay_from_id(request, relay_id) + relay, _ = relay_from_id(request, relay_id) if relay is None: raise AuthenticationFailed("Unknown relay") + if relay.is_internal is None: + 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..cacccbfa58902a 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 not relay.is_internal == is_internal: # update the internal flag in case it is changed relay.is_internal = is_internal relay.save()