<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Webhooks on Luther Monson</title>
    <link>https://luth.io/tags/webhooks/</link>
    <description>Recent content in Webhooks on Luther Monson</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Wed, 07 Oct 2026 21:10:00 -0700</lastBuildDate>
    <atom:link href="https://luth.io/tags/webhooks/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Webhooks Arrive Out of Order: How My Scheduler Killed Live Builds</title>
      <link>https://luth.io/blog/2026/10/webhooks-out-of-order-scheduler/</link>
      <pubDate>Wed, 07 Oct 2026 21:10:00 -0700</pubDate>
      <guid>https://luth.io/blog/2026/10/webhooks-out-of-order-scheduler/</guid>
      <description>&lt;p&gt;The scheduler in &lt;a href=&#34;https://luth.io/blog/2026/08/ephemerd-one-daemon-every-os/&#34;&gt;ephemerd&lt;/a&gt; is event-driven. GitHub sends a&#xA;&lt;code&gt;workflow_job&lt;/code&gt; webhook when a job is queued, when it starts and when it completes. ephemerd creates and destroys runners&#xA;to match. For a while that worked well enough that I stopped thinking about it. Then a &lt;code&gt;docker-build&lt;/code&gt; job failed with&#xA;&amp;ldquo;The self-hosted runner lost communication with the server&amp;rdquo;. I pulled the node&amp;rsquo;s journal. ephemerd had destroyed that&#xA;runner itself, on purpose, while it was running the build.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
