From ab5923778db39df2c2a180d9f22740e9d2de18f8 Mon Sep 17 00:00:00 2001 From: Alex Sohn Date: Mon, 17 Aug 2026 16:00:14 -0400 Subject: [PATCH] feat(devservices): Add a siloed relay variant for split-silo dev relay.yml points upstream at port 8001, which is the monolith devserver. Under split-silo dev that port belongs to the control silo, but relay's upstream endpoints (register_challenge, project_configs) are cell-silo only and the sentry_relay table exists only in the region database. Relay therefore failed registration with "Unknown relay" and rejected every event with a 403. Add a relay-siloed service that overrides upstream to the region port, selected by a new containerized-siloed mode. The shared service definition moves to an anchor so the two variants differ only in that flag, and the default relay service keeps its previous command. --- devservices/config.yml | 48 +++++++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/devservices/config.yml b/devservices/config.yml index 0e69508c1ec..ce011cebf14 100644 --- a/devservices/config.yml +++ b/devservices/config.yml @@ -24,35 +24,45 @@ x-sentry-service-config: mode: containerized relay: description: Service that pushes some functionality from the Sentry SDKs as well as the Sentry server into a proxy process. + relay-siloed: + description: Relay for split-silo dev, where the region silo serves the upstream API. modes: default: [redis, kafka, objectstore] containerized: [redis, kafka, objectstore, relay] + containerized-siloed: [redis, kafka, objectstore, relay-siloed] x-programs: devserver: command: cargo run +x-relay-base: &relay-base + image: ghcr.io/getsentry/relay:nightly + ports: + - 127.0.0.1:7899:7899 + command: [run, --config, /etc/relay] + healthcheck: + test: ["CMD", "/bin/relay", "--config", "/etc/relay", "healthcheck", "--mode", "live"] + interval: 5s + timeout: 5s + retries: 3 + volumes: + - ./config/relay.yml:/etc/relay/config.yml + - ./config/devservices-credentials.json:/etc/relay/credentials.json + extra_hosts: + - host.docker.internal:host-gateway + networks: + - devservices + labels: + - orchestrator=devservices + restart: unless-stopped + services: relay: - image: ghcr.io/getsentry/relay:nightly - ports: - - 127.0.0.1:7899:7899 - command: [run, --config, /etc/relay] - healthcheck: - test: ["CMD", "/bin/relay", "--config", "/etc/relay", "healthcheck", "--mode", "live"] - interval: 5s - timeout: 5s - retries: 3 - volumes: - - ./config/relay.yml:/etc/relay/config.yml - - ./config/devservices-credentials.json:/etc/relay/credentials.json - extra_hosts: - - host.docker.internal:host-gateway - networks: - - devservices - labels: - - orchestrator=devservices - restart: unless-stopped + <<: *relay-base + # relay.yml uses port 8001, but that port is the control silo in split-silo dev. + relay-siloed: + <<: *relay-base + command: [run, --config, /etc/relay, --upstream, "http://host.docker.internal:8010/"] networks: devservices: