<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title>Postmortem - 标签 - William</title>
    <link>https://williamlfang.github.io/tags/postmortem/</link>
    <description>Postmortem - 标签 | William</description>
    <generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Wed, 11 Nov 2026 10:48:10 &#43;0800</lastBuildDate><atom:link href="https://williamlfang.github.io/tags/postmortem/" rel="self" type="application/rss+xml" /><item>
  <title>One night, one dead disk: an Airflow trading-host outage and what it taught me</title>
  <link>https://williamlfang.github.io/2026-11-11-airflow-outage-postmortem/</link>
  <pubDate>Wed, 11 Nov 2026 10:48:10 &#43;0800</pubDate>
  <author>william</author>
  <guid>https://williamlfang.github.io/2026-11-11-airflow-outage-postmortem/</guid>
  <description><![CDATA[<div class="featured-image"><img loading="eager" src="https://williamlfang.github.io/2026-11-11-airflow-outage-postmortem/featured-image.png" alt="One night, one dead disk: an Airflow trading-host outage and what it taught me" title="One night, one dead disk: an Airflow trading-host outage and what it taught me" referrerpolicy="no-referrer"/></div><blockquote>
<p><strong>Update 2026-11-11:</strong> the &ldquo;a restart is a procedure, not a command&rdquo; advice below is now three scripts: a dated image built from the running container, a redeploy that refuses while tasks run and rolls back on failure, and a supervisor inside the container. See <a href="/2026-11-11-airflow-image-snapshot-and-redeploy/">Rebuildable Airflow</a>.</p>
</blockquote>
<p>At 19:56 one evening, a 21.8 TB data disk on our Airflow host started throwing I/O errors. By 21:37 someone had pointed Docker at a fresh, empty data directory to get things running again. That one change, made under pressure and never written down, turned into <strong>five separate incidents by 09:30 the next morning</strong>: a message broker that vanished, a missing mount, concurrency limits back at their defaults, live-trading processes Airflow no longer knew about, and two restarts that orphaned every live trade.</p>
<p>Everything was back by 10:08. This post is the timeline, the root cause of each problem, how each was fixed (including the 1.5-minute outage I caused myself while fixing it), and what I would change so this can&rsquo;t happen the same way again.</p>]]></description>
</item>
</channel>
</rss>
