← All posts

The Stranded Change: What Route 53's Accelerated Recovery Actually Fixes

Route 53's data plane answers queries from over 200 points of presence worldwide and has for years. Its control plane — the part that lets you change a record — has run from exactly one AWS Region for years. A new feature called Accelerated Recovery finally gives it a standby, but not by doing the obvious thing, and the reason why traces straight back to the outage that made the case for building it.

On 26 November 2025, five weeks after the October 2025 us-east-1 outage, Amazon Route 53 quietly picked up a new checkbox: Accelerated Recovery. AWS’s own announcement frames it in the driest possible terms — a business continuity feature, a 60-minute recovery time objective, no additional charge. What it actually closes has less to do with what broke that October night than with an architectural fact that’s been true for years: the machinery that answers your DNS queries is one of the most resilient systems AWS operates, and the machinery that lets you change what it answers has, until now, run from exactly one place.

The problem: two planes, one of them single-region

Route 53 splits itself into two planes, and AWS is explicit about the distinction. The data plane is “the authoritative DNS service,” running “across over 200 Points of Presence (PoP) locations, answering DNS queries based on your hosted zones and health check data.” The control plane is different: “the Route 53 APIs, which allow you to manage DNS entries” — create a record, delete a record, stand up or tear down a zone. And for Route 53 public and private DNS alike, that control plane “is located in the us-east-1 AWS Region.” Two hundred-plus points of presence answer your queries. One Region lets you change them.

Under normal conditions this distinction is invisible, because the two planes rarely fail at the same time and because ChangeResourceRecordSets isn’t a call most teams make often. It stops being invisible the moment you need to make a change during a regional event — flip a failover record, rotate an endpoint, pull a zone out of rotation — and us-east-1 happens to be the Region having the event. Nothing about DNS resolution breaks in that scenario: the same documentation is explicit that “DNS query resolution from the Route 53 data plane continues to work normally during Regional service impairment.” It’s the ability to act that goes away.

That’s a description of an architectural exposure, not a description of what happened on 19–20 October 2025. AWS’s post-event summary for that outage — which this blog covered in detail at the time — traces the entire disruption to a race condition inside DynamoDB’s own DNS automation: two internal “DNS Enactor” processes updating the regional DynamoDB endpoint concurrently, one applying a stale plan that overwrote a newer one, a cleanup job then deleting that stale plan because it looked old enough to be safe to remove, and the endpoint left pointing at nothing. That’s AWS’s own automation writing to Route 53 on AWS’s behalf. The summary’s remediation section is entirely about that chain: disabling the DynamoDB DNS Planner and Enactor worldwide, adding a velocity control to Network Load Balancer’s health-check failover, throttling EC2’s data propagation queues. It says nothing about customers being locked out of their own hosted zones that night — as far as the public record shows, the incident never reached the point of testing that exposure. It’s still real, and it predates October by years. It’s just a different fault, one layer up, that Accelerated Recovery happens to close.

Route 53's data plane answers DNS queries from over 200 points of presence distributed worldwide and stays available through a regional impairment; its control plane — the APIs that create, change, and delete records — has run from the single us-east-1 Region for years

The challenge: why not just make the control plane multi-region too

The obvious fix reads like one line of architecture: replicate the control plane the way the data plane already is, across multiple Regions, and let any of them accept a write. AWS’s own framing of why control planes and data planes are built differently cuts against that: “the control planes are optimized for data consistency, whereas the data planes are optimized for availability. The data plane’s resilient design allows it to maintain availability even during rare disruptive events, during which the control plane might become unavailable.” A DNS query answered from a resolver a few seconds behind the authoritative source is invisible — that’s normal caching behaviour, not a fault. A DNS zone with two Regions independently accepting conflicting writes is a correctness problem with no natural resolution: which value is the real one, when two Regions each believe they hold the latest state?

That’s not a hypothetical risk to reason about in the abstract. It’s the specific, documented failure mode from five weeks earlier. The race condition that emptied DynamoDB’s endpoint record wasn’t caused by too little automation — it was caused by two writers with no strict ordering between them, and a stale plan clobbering a fresh one. Building Route 53’s own defence against a us-east-1 outage out of that same pattern — multiple Regions, each free to accept DNS changes, reconciled after the fact — would risk reproducing the exact bug class that made the case for building a defence in the first place. (AWS doesn’t state this connection explicitly in the Accelerated Recovery launch materials; it’s the design constraint its architecture is consistent with, not a claim AWS itself makes.)

The solution: one standby Region, a narrow API, and changes you have to notice yourself

What AWS built instead is active-passive, opt-in per zone, and honest about what it can’t reconcile automatically. Per the Route 53 developer guide, turning on accelerated recovery for a public hosted zone makes Route 53 keep a continuously updated copy of that zone in US West (Oregon). If AWS detects that us-east-1 is unavailable “for a long time,” it fails the control plane over to Oregon within the stated 60-minute RTO, and you keep making changes through the same API endpoint, CLI, and SDK calls you already use — no application changes required. When us-east-1 recovers, Route 53 fails back automatically.

Only a narrow slice of the API works while failed over: ChangeResourceRecordSets and GetChange to submit and track record changes, plus eleven read-only operations covering hosted zone, geolocation, and delegation-set lookups — thirteen methods in total. Everything else stays locked until failback: you can’t create or delete a hosted zone, and you can’t turn DNSSEC signing on or off. You also can’t turn accelerated recovery on once a failover has started — it has to be enabled in advance, and enabling it can take “up to several hours” for a large zone, with a brief window near the end, up to several minutes, where changes aren’t accepted at all. This isn’t AWS’s first attempt at softening the us-east-1 dependency, either — the Route 53 console itself already fails over to being served from Oregon if AWS detects a us-east-1 impairment, and has for longer than this feature has existed. But that only ever covered looking at your records. Accelerated Recovery is the first time the write path gets a standby Region, and only for the zones you’ve explicitly opted in.

The part that reflects the lesson from October most directly is what happens to a change that’s in flight when the failover starts. AWS calls it a “stranded change”: one accepted by us-east-1 but not yet copied to Oregon before the Region went down. Route 53 doesn’t try to guess whether that change should still apply — it just tells you it can’t confirm it did. Poll GetChange for a stranded change during the outage and you get PENDING; poll it after failover completes and you get NoSuchChange, meaning Route 53 could not confirm the copy and the change needs to be resubmitted as new. AWS’s own guidance calls this out specifically for CloudFormation, which already polls GetChange and only marks a stack update complete once a change reaches INSYNC: if us-east-1 goes down mid-update, that stack update simply doesn’t finish during the outage, and you retry it after failover to let CloudFormation resubmit. Failback, by contrast, creates no stranded changes at all, AWS says — which is what you’d expect when Oregon has been the sole point of truth for enabled zones throughout the failover and there’s nothing left unsynced to reconcile.

A handful of side effects come with turning it on: AWS PrivateLink links, in AWS’s words, won’t work once failed over and work again after failback; CloudFront flat-rate pricing plans aren’t supported with it enabled; and a hosted zone with accelerated recovery on can’t be deleted — you have to turn the feature off first. None of it costs extra, and none of it is available in AWS GovCloud or in the China Regions.

Under Accelerated Recovery, Route 53 continuously copies an enabled public hosted zone from us-east-1 to US West (Oregon); a change accepted just before a us-east-1 impairment but not yet copied becomes a stranded change — GetChange returns PENDING during the outage and NoSuchChange once failover completes, meaning it must be resubmitted rather than assumed to have applied

The footprint

The concrete action here is an audit, not a subscription. Accelerated recovery has to be switched on before you need it — the one moment you can’t enable it is the moment us-east-1 is actually down — so the question worth answering this week is which of your public hosted zones carry failover records or other change velocity you’d actually want mid-incident, and turning it on for those now, at zero marginal cost, while accepting that enabling a large zone takes hours and ends with a short write freeze you’d rather not hit during a live event.

The 60-minute figure is worth taking literally, in both directions. It’s not a fix for a 90-second Availability Zone blip — you already have faster tools for that, and this feature doesn’t replace them. It’s built for the scale of event that actually took DynamoDB’s endpoint down for close to three hours, and treating it as a substitute for well-tuned health checks and existing failover routing policies rather than a complement to them would be a mistake in the other direction. And it changes what your automation needs to expect: if anything in your deployment pipeline polls GetChange and blocks on INSYNC — CloudFormation is the documented case, but a custom script with the same pattern behaves identically — that pipeline now has a specific, nameable failure mode during a us-east-1 event, and the runbook should say “resubmit the stranded change” rather than leaving whoever’s on call to work that out live from a NoSuchChange response they’ve never seen before.

The gap worth remembering is the one this feature doesn’t touch. Private hosted zones — the DNS you use for VPC-internal traffic — share the identical us-east-1-pinned control plane and get none of this. There is no opt-in, no standby copy, no failover, because AWS built accelerated recovery for public zones only. If your own resilience posture leans on being able to update internal DNS mid-incident, that exposure is exactly where it was before 26 November 2025, and closing it is still entirely on you, not on a checkbox.

Cover of Cloud Networking and Resilience
Apress Media, LLC

Order the book

Cloud Networking and Resilience

Designing Scalable, Fault-Tolerant, and Highly-Available Cloud Network Architectures

ISBN · Print 979-8-8688-2435-7
ISBN · eBook 979-8-8688-2436-4

Dedicated to Ade (2017–2022). All personal proceeds donated to charities supporting cats in distress.

Affiliate links — proceeds go to charities supporting cats in distress.