- Who
- Every Railway-hosted domain, all regions
- Outage on
- 30 Sep 2026
- Down for
- 5 min
- Source
- Railway incident report
What happened
07:29 UTC00:29 Pacific
A change to the routing control plane is merged after staging tests: a schema update plus a new routing service.
07:35 UTC00:35 Pacific
About now, the new routing service goes live in every region before the schema update finishes. Every route lookup fails, and the proxies answer 404. Alerts page the on-call team.
07:40 UTC00:40 Pacific
About now, the schema update finishes. The next retry works and domains route normally again.
The question nobody answered: Routing came back by itself when the schema landed. What would it have taken to stop it if the migration had been slow?
07:44 UTC00:44 Pacific
Engineers name the cause: the routing service came online before its schema.
07:47 UTC00:47 Pacific
Full recovery confirmed. No rollback needed.
The WTF
For five minutes, Railway's proxies told the whole internet that its domains didn't exist. The routing service had only said "I can't answer right now". And the parallel pipelines came from a change made for resilience: routing moved out of the monolith so it keeps working during a major cloud outage, and the monolith's single pipeline was what kept the schema first.
- Bad deploy
- Database
The lesson
Two things are worth checking in our own systems.
First, does our proxy or client treat "the lookup failed" the same as "nothing found"? Those two need different answers. Railway's proxies would normally have fallen back to the last route they knew, and that fallback wasn't there on the day.
Second, what makes sure a migration runs before the code that needs it? If the answer is "the pipeline happens to run in that order", a refactor can quietly remove it. Railway is making the routing service refuse to go live until the matching schema is in place, forcing one order for migration and rollout, and adding region-by-region rollouts.
Make your new code check for its schema before it takes traffic.
Check this in your system
#HugOps
To the Railway team: thank you for a report that shows the timeline to the minute, explains why a lookup error became a 404, and says what you're changing.