2025-11-26 · Database

Postmortem: a migration that locked our production table

One ALTER TABLE during peak traffic, 14 minutes of errors, and the checklist we wrote after.

Introduction

Reconstructs the timeline, explains why the lock was held far longer than expected, and lists the safeguards we added.

Field notes

A few patterns we kept seeing while puttering around Database problems:

  • The simple version survived every refactor; the clever version didn’t.
  • Documentation written during the work aged far better than documentation written after.
  • The second time a problem shows up, it is already a pattern — name it.

A checklist you can steal

  • The failure is reproducible with one command.
  • The fix has a test that fails without it.
  • Someone other than the author has run it on their machine.

Closing

Write the short version future-you will actually read. That is the whole trick.