~/talk

Deconstructing an Abstraction to Reconstruct an Outage

Talkat SREcon23 Europe/Middle East/Africa · 2023-10-10..10-12· [databases]
slides:none on file

At 15:09 a RAID controller ejects disks and the primary goes down; engineers reproduce a three-node Postgres cluster in Docker Compose, inject faults with SIGKILL and crash the synchronous replica, and even hex-edit WAL records to set the xlog total_len to zero, which triggers an "invalid record" error but does not cause failover. The real trigger is Pacemaker config: a backup VIP colocated on the replica plus a negative infinity collocation prevents rescheduling, leaving the cluster stuck.

AI-written summary · about

  1. 0:00Introduction to the outage story
  2. 1:48Speaker introduction and background
  3. 2:50Cluster architecture and setup explanation
  4. 4:14The incident begins with RAID controller failure
  5. 6:00Mission to recreate the outage
  6. 7:48Initial fault injection attempts
  7. 9:58Understanding write-ahead logs in PostgreSQL
  8. 13:49Debugging the binary log error message
  9. 16:15Analyzing binary log files in a hex editor
  10. 19:28Modifying binary logs to reproduce the error
  11. 20:57Discovering the backup virtual IP address role
  12. 22:41Pacemaker configuration and constraints
  13. 25:27The write-ahead log error as a red herring
  14. 26:31Minimal reproduction of the outage
  15. 26:51Lessons learned from the incident
  16. 27:54The danger of automation eroding knowledge
  17. 28:58Importance of game days and manual practice
  18. 29:41Questioning reproduction and wider context
  19. 30:02Prediction about binary formats in web development
  20. 31:27Learning from outages and incident reviews
  21. 32:55Call to share difficult incident stories
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.