Introduction
A DNS cutover can look stuck even when the new record is correct, simply because too many resolvers cached the old answer before the change. High TTL values do not prevent migration, but they do force you to wait longer for the old data to age out. The fix is to understand which caches are still serving the previous destination and to keep the old path stable until those caches expire.
Symptoms
- Some users still reach the old server long after DNS was updated
- Different public resolvers return different answers for the same hostname
- Monitoring shows traffic split between old and new environments
- The issue is worst immediately after a migration or provider switch
- Teams assume the new record is wrong even though authoritative DNS is correct
Common Causes
- TTL was left high before a planned cutover
- Recursive resolvers cached the old answer before the new value was published
- Browser, OS, or local network caching adds another layer of delay
- The old environment was shut down before cached answers naturally drained away
- Multiple records or intermediate CNAME targets have different TTL behavior
Step-by-Step Fix
- Confirm the authoritative DNS record is already correct before blaming propagation alone.
- Check the TTL value on the old and new records so you know how long cached answers may persist.
- Compare responses from several public resolvers to see whether you are dealing with normal cache decay or a true configuration problem.
- Keep the old server, redirect, or maintenance response available while cached traffic is still draining.
- Avoid making repeated DNS flips during the same window, because that only extends confusion across resolver caches.
- If the migration is still upcoming, lower TTL well in advance so later changes propagate faster.
- Verify whether any CNAME target or CDN layer has its own caching behavior that affects the visible cutover.
- Re-test after the original TTL window has passed rather than expecting instant convergence everywhere.
- Build future migration runbooks around pre-lowered TTL values and explicit overlap time between old and new environments.