Cases4 cases
1 to 4 of 4
IL-0354Fly.io private networking (6PN) broke for some machines after edges received gateway /80 routesFly.io2026- Symptoms
On 23 September 2026, private networking (6PN) stopped working for a subset of Fly.io machines. Fly.io mitigated it in about 10 minutes, and the problem came back briefly the following day.
- Trigger
Fly.io changed its 6PN routing so that edges act as gateways for non-static peers. Every edge was then treated as a gateway and got a /80 route for its prefix in the Linux routing table, which overrode the per-machine routing for machines that had kept a reused host ID.
- Root cause
- Component
- Contributing factor
- Remediation
- Deleted the bad /80 routes from the routing table on all affected hosts
- Rolled back the changes to s6pnforwarderd, the daemon that manages 6PN routes
- Shipped a fix that adds interactive peers only as /128 routes, which did not prevent a brief recurrence the next day
- Changed routing to always look first for machines that carry a host's ID, whatever kind of host it is
- Action items
- Give the machines used to test and alert on 6PN non-local 6PN addresses
- Make host IDs in 6PN addresses carry no weight in routing decisions, for gateway peers as well as machines
- Move new peers and machines across the board to a better model than the current hack kept for existing gateway peers
- Lessons
Not everyone at Fly.io knew that a worker's host ID could be reused by a host that is not a worker, because host ID assignment was not well documented, and the gateways had not been touched for a long time, so the problem stayed hidden until edges became gateways. All existing 6PN checks used machines on their original host, so they could not catch any problem with host ID reuse or stable 6PN addresses; host IDs need to stop influencing 6PN routing in general for this kind of incident not to recur.
IL-0371Half of new connections to Render Postgres databases with point-in-time recovery failed while their backup jobs ranRender2023- Symptoms
After Point-in-time Recovery (PITR) was released to eligible new Render Postgres databases on 21 April 2023, 50% of new connections to PITR-enabled databases failed while a PITR backup job was running. A backup takes 15 to 45 minutes depending on database size, and existing connections, such as those held through connection pooling, kept working.
- Trigger
Point-in-time Recovery was released to eligible new databases on 21 April 2023, and its backup job carried an incorrect networking configuration.
- Root cause
- Component
- Contributing factor
- –
- Remediation
- Disabled backups for affected databases until they could be scheduled in low-traffic hours
- Changed the backup job's network labels so the routing layer no longer picks it up as a database
- Action items
- Tighten the process for sharing incident updates so problems are not declared resolved too early
- Use more specific network labels for the database routing layer so ineligible IPs are never added
- Run a skipped asynchronous job in the next scheduled window instead of immediately
- Use open source benchmarking software to reproduce issues customers notice
IL-0532Azure Software Load Balancer sent packets of one flow to different backends, dropping Firewall and Private Link trafficMicrosoft Azure2022- Symptoms
From 05:26 UTC on 28 June 2022, some Azure customers saw intermittent network failures and packet loss when connecting to resources behind a Software Load Balancer (SLB). Telemetry showed a small increase in errors and customers raised support requests, but the failures were intermittent and were not linked to a recent deployment at first.
- Trigger
A new SLB code deployment, rolled out through Safe Deployment Practices, made some MUX instances store the backend DIPs of load balancers with more than 15 DIPs in a different order.
- Root cause
- Component
- Contributing factor
- Detection
Telemetry showed a small increase in errors and customers raised support requests, but the health checks of Safe Deployment Practices did not correlate these intermittent signals with the deployment until the code had reached 14 regions.
- Remediation
- Mitigated the VIPs of customers identified as impacted with targeted manual operations
- Built and tested a hotfix and rolled it out in phases under Safe Deployment Practices
- Ran automation that scanned all VIPs every five minutes and fixed VIPs in an inconsistent state until the hotfix was out
- Restored consistent ordering of the backend instances to the state before the incident
- Action items
- Add Azure Firewall monitoring that detects when the upstream and downstream packets of one flow do not reach the same DIP
- Keep the IPv6 flow identifier consistent for the lifetime of a connection so all its packets land on one MUX
- Improve packet capture support for firewalls
- Add logging of TCP flows, including invalid packets and RST, FIN and FIN-ACK packets
- Onboard more Azure services to the Gandalf AIOps solution suite for end-to-end monitoring during safe deployments
- Lessons
Microsoft wrote that the incident showed the need for more thorough end-to-end monitoring during safe deployments.
IL-0229bunny.net's DNS servers crashed in a loop on a corrupted routing database file and could not fetch a fix from its CDNbunny.net2021- Symptoms
On 22 June 2021, within minutes of an update released at 8:25 AM UTC, bunny.net's global fleet of close to 100 DNS servers kept crashing and restarting, more than 60% of traffic was lost, hundreds of Gbits of throughput disappeared, and over 750,000 websites were affected. After 10 minutes the team realised that the DNS servers were restarting and dying and that nothing could bring them back up in that state.
- Trigger
At 8:25 AM UTC bunny.net released an update meant to reduce the download size of the SmartEdge optimization database, and it uploaded a corrupted file to Edge Storage.
- Root cause
- Component
- Contributing factor
- Detection
About 10 minutes after the release, the team realised that the DNS servers were restarting and dying.
- Remediation
- Deployed by hand an update that disabled the SmartEdge system on the DNS nodes
- Routed all requests through Frankfurt instead of Madrid on a couple of DNS servers
- Migrated the deployment systems and files to a third-party cloud storage service
- Rewired the deployment system and DNS software to the new storage and deployed
- Synced the databases and deployed the newest file sets through the third-party service
- Action items
- Phase out the BinaryPack library as a hot-fix
- Test third-party libraries more extensively
- Migrate the internal APIs to an independent third-party service
- Find how to stop non-critical software from becoming a single point of failure across clusters
- Make the DNS system keep a local copy of all backup data with automatic failure detection
- Lessons
bunny.net had built its systems to rely on each other, including the critical parts of its internal infrastructure, so one corrupted file brought down several layers of redundancy with no way back. A part of the infrastructure treated as non-critical turned out to be a single point of failure for several clusters at once, which canary deployments did not catch. Building infrastructure inside its own ecosystem lets one failure cascade through all of it. In the rush to fix the outage the team made typos and mistakes, and the final deployment came after it calmed down and double-checked everything.
These 4 cases involve CDN and edge network and Cloud load balancer. kubegap audits a Kubernetes cluster for gaps like these, read-only, from Claude Code or Codex; its checks cite public reports like the ones in this library.
By root cause1
Faulty deployment4 cases
- Component
- Contributing factor
- Organisation
IL-0354Fly.io private networking (6PN) broke for some machines after edges received gateway /80 routesFly.io2026IL-0371Half of new connections to Render Postgres databases with point-in-time recovery failed while their backup jobs ranRender2023IL-0532Azure Software Load Balancer sent packets of one flow to different backends, dropping Firewall and Private Link trafficMicrosoft Azure2022IL-0229bunny.net's DNS servers crashed in a loop on a corrupted routing database file and could not fetch a fix from its CDNbunny.net2021