<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Porting etcd to Pebble</title><link>https://ahmetb.github.io/etcd-lsm/</link><description>Recent content on Porting etcd to Pebble</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 12 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://ahmetb.github.io/etcd-lsm/index.xml" rel="self" type="application/rss+xml"/><item><title>What we're explicitly not doing</title><link>https://ahmetb.github.io/etcd-lsm/posts/06-what-were-not-doing/</link><pubDate>Tue, 12 May 2026 00:00:00 +0000</pubDate><guid>https://ahmetb.github.io/etcd-lsm/posts/06-what-were-not-doing/</guid><description>Big migrations succeed by what they refuse to take on. A list of things this milestone deliberately punts — and why each refusal earns its keep.</description></item><item><title>Disabling Pebble's WAL</title><link>https://ahmetb.github.io/etcd-lsm/posts/04-disabling-pebbles-wal/</link><pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate><guid>https://ahmetb.github.io/etcd-lsm/posts/04-disabling-pebbles-wal/</guid><description>etcd already has a Raft write-ahead log. Running Pebble&amp;rsquo;s WAL on top is wasted fsyncs. The trade-off is that we have to be exactly right about a single integer.</description></item><item><title>What the chaos gate surfaced</title><link>https://ahmetb.github.io/etcd-lsm/posts/05-what-the-chaos-gate-surfaced/</link><pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate><guid>https://ahmetb.github.io/etcd-lsm/posts/05-what-the-chaos-gate-surfaced/</guid><description>We ran the kill -9 gate. It surfaced three bugs in code we hadn&amp;rsquo;t touched. Two were structural; one cascaded from another.</description></item><item><title>How bbolt and Pebble differ</title><link>https://ahmetb.github.io/etcd-lsm/posts/03-bbolt-vs-pebble/</link><pubDate>Sun, 10 May 2026 00:00:00 +0000</pubDate><guid>https://ahmetb.github.io/etcd-lsm/posts/03-bbolt-vs-pebble/</guid><description>A short primer on B+ trees and LSM-trees, and why the difference between them shows up at exactly the operational seams etcd operators care about.</description></item><item><title>Sealing the bbolt leaks</title><link>https://ahmetb.github.io/etcd-lsm/posts/02-sealing-the-bbolt-leaks/</link><pubDate>Sat, 09 May 2026 00:00:00 +0000</pubDate><guid>https://ahmetb.github.io/etcd-lsm/posts/02-sealing-the-bbolt-leaks/</guid><description>Before any Pebble code can land, four bbolt-typed APIs have to leave the public Backend interface. Boring work, load-bearing outcome.</description></item><item><title>The case for a second storage engine</title><link>https://ahmetb.github.io/etcd-lsm/posts/01-the-case-for-a-second-engine/</link><pubDate>Fri, 08 May 2026 00:00:00 +0000</pubDate><guid>https://ahmetb.github.io/etcd-lsm/posts/01-the-case-for-a-second-engine/</guid><description>Why etcd is getting a Pebble (LSM-tree) backend alongside bbolt — what hurts at Kubernetes scale, and what we explicitly are not changing.</description></item></channel></rss>