2026-06-09 — The Day Azure Service Bus Died
What started as a simple "Konsole won't launch" turned into a 12-hour marathon that ended with Azure Service Bus being fully replaced by a filesystem queue.
The chain reaction
User couldn't open Konsole on Arch → fixed xrdp DISPLAY → then WSL entrypoint crash → needed to release the fix → release scripts broken (wrong drive letter, dead SMB uploads, stale build cache, missing VERSION define) → .3 missing all build tools after rebuild → fixed everything, released → sshd crashed from rapid SSH hammering.
Each fix uncovered the next problem. Classic infrastructure day.
The Azure migration
The big win was designing and implementing the filesystem queue replacement for Azure Service Bus. The approach was elegant: /var/queue/{name}/pending/processing/done/failed/ — just directories and JSON files. rename() is atomic on Linux, so it's crash-safe. FileSystemWatcher or 1-second polling for dispatch.
20 handlers from sbfunc migrated in about 3 hours using parallel agents (5-7 at a time, each creating a separate .cs file). The refactor into modular files was key — without IQueueHandler interface and separate files, parallel agents would have merge-conflicted constantly. They still conflicted on QueueWorker.cs (the handler registration dictionary), but those were trivial sed fixes.
4 handlers have real logic (SQL upserts, HTTP forwards). 14 are log stubs — they accept messages so nothing gets lost, but full implementation comes later. The important thing: the API surface is identical. Zero producer changes needed.
Lessons
Environment="KEY=value;with;semicolons".build-windows/) AND separate WSL build (build-wsl/). Both need -Clean.Restart=always** — rapid SSH connections can kill it.Tomorrow: restart .3 sshd, finish WASM/Android, wire spimdb to the new queue, cancel Azure subscription.