IL-0508 SourceHut · 2023-01-11database
All SourceHut services went down when the main database server remilia.sr.ht failed in hardware and became unreachable
remilia.sr.ht, SourceHut's main database server and a physical host in a US datacenter, suffered a hardware failure at about 13:38 UTC on 11 January 2023 and became unreachable, and the loss of database connectivity took down all services. The off-site database backup was working, but it could not have served as a failover database host. Nobody at the datacenter answered the phone before official hours, so an operator sent SourceHut's emergency contact in the area, who was an hour away. Only one of SourceHut's three staff had a valid passport in case serious work had to be done on site in the US.
While waiting, the team planned to diagnose the server and, if it could not be recovered, move its hard drives into another host and bring that host up as a clone of the database server. It chose cirno1.sr.ht, a build worker redundant with cirno2.sr.ht, so taking it out of service would not affect availability. Datacenter staff power-cycled remilia, which did not come back but suggested the disks were not at fault, and at 15:03 the hardware other than the disks was judged likely lost. The emergency contact arrived at 15:39, confirmed the diagnosis and moved the disks into cirno1's chassis, which brought remilia back in its old state; there was some initial confusion about remilia's disk layout. Prometheus scraped remilia again at 16:04, services began coming back at 16:06, and all services were online at 16:09 UTC, with builds.sr.ht running at reduced build capacity without cirno1.
- Severity
- –
- Scope
- All SourceHut services were down; afterwards builds.sr.ht ran with reduced build capacity
- Users affected
- –
- Region
- US datacenter
- Time to detect
- 2m
- Time to resolve
- 2h 31m
Symptoms
At about 13:40 UTC on 11 January 2023, alerts started firing for most SourceHut services being unavailable, along with one for remilia.sr.ht, the physical host that is SourceHut's main database server. The database server could not be reached remotely at all.
Prometheus had started failing to scrape metrics from remilia at 13:38. Without database connectivity, services went down across SourceHut. At 13:44 Postfix was shut down so the mail delivery pipeline would not spill over, and Alertmanager was disabled to silence the many alarms.
With no remote way to reach the server, someone had to go to the datacenter. A call to the datacenter at 8:45 AM local time went unanswered because its daytime availability starts at 9 AM, and SourceHut's own emergency contact in the area was an hour's travel away. When datacenter staff power-cycled the server it did not come back and stayed unresponsive.
Symptom Service outage
Root cause
Root cause Hardware failure
- Trigger
- remilia.sr.ht, the main database server, suffered a hardware failure at about 13:38 UTC.
Detection
Alerts fired at about 13:40 UTC for most services and for remilia.sr.ht itself, after Prometheus started failing to scrape remilia at 13:38.
Remediation
- Sent SourceHut's emergency on-call contact in the datacenter area to go on site
- Moved remilia's disks into the chassis of build worker cirno1.sr.ht and brought it online as remilia
Action items
- Make the off-site database copy able to serve as a failover database host
- Re-prioritize the migration to the EU
- Set up new database failover
- Add a new EU build worker to backfill build capacity
- Record a better hardware inventory for future reference
Lessons
–
Sources
Related cases
IL-0306A Neon pageserver's EC2 instance failed without warning and Postgres databases of 0.4% of us-east-1 projects stalledNeon · 2024same root cause · shared Database
IL-0370Render Postgres databases in Frankfurt were down up to 65 minutes as their disks stayed attached to a failed nodeRender · 2022same root cause · shared Database
IL-0323A RAID battery backup unit failure crashed db1075, the MariaDB primary of section s3, and every s3 wiki went read-onlyWikimedia Foundation · 2019same root cause · shared Database
IL-0289A failing SSD made updown.io's primary MongoDB about 200 times slower, no failover happened and the site went downupdown.io · 2019same root cause · shared Database
IL-0219GoCardless's API and Dashboard failed every request for 1 hour 50 minutes when Pacemaker did not promote a replicaGoCardless · 2017same root cause · shared Database
Check your cluster for this
For AI tools and scripts
- This case as JSON: https://incidentlib-api.benchlet.com/cases/IL-0508
- The cases most like it: https://incidentlib-api.benchlet.com/cases/IL-0508/similar
- MCP server (Streamable HTTP, no key):
https://incidentlib-mcp.benchlet.com/mcp
The API needs no key. The MCP server offers search_incidents, get_incident, list_incidents, get_topic and vocab; both are explained on API and MCP.