Sync the self-hosting stack

This commit is contained in:
2026-08-27 22:38:30 +02:00
parent 02ab18aff1
commit 91273ebb08
+30
View File
@@ -9,6 +9,36 @@ one of them changed. An entry says which artefact and which version, so `web 0.1
Every version published to a channel appears here. Nothing is written from memory afterwards: a build Every version published to a channel appears here. Nothing is written from memory afterwards: a build
cannot be published without its entry. cannot be published without its entry.
## 2026-08-27 — A machine could show Offline while you were using it `api 0.95.0` `web 0.121.0`
**Only affects deployments running more than one copy of the api.** On Docker Compose this cannot
happen and there is nothing here for you beyond taking the build.
An agent could sit in the list marked **Offline** while its last heartbeat was seconds old and a
terminal was open on it. The machine was fine throughout — it was the row that was wrong, and it
stayed wrong until that machine happened to reconnect, which for one that never drops is never.
It took a restart to start. When an api replica stops it closes its agents' sockets and records
them as offline, which is true of the sockets it just closed. An agent notices immediately and
reconnects to another replica in milliseconds, and that replica records it as online — then the
stopping one's bookkeeping ran and overwrote it. Whichever machines happened to reconnect inside
that window were left marked offline for good.
Two things changed so that it cannot stick. A replica shutting down now checks whether each machine
has already been picked up elsewhere and leaves those alone. And a heartbeat arriving on a socket
repairs a row that claims the machine is gone — so any window left over closes itself within the
minute, without restarting anything.
**A machine that is revoked or waiting for approval is never changed by this.** Those are decisions
you made, and a heartbeat is not one.
**And the list no longer disagrees with the machine's own page.** The page has always reported
whether a socket is attached right now; the list printed the stored status instead, so the two could
say different things about the same machine. When they disagree the list now leads with the live
connection and marks the row as catching up. The opposite case is unchanged: a machine that claims
to be online with no socket attached still reads **Online · reconnecting**, because there the stored
value is the one over-promising and you want to see it.
## 2026-08-27 — Redis can survive losing a node `api 0.94.0` ## 2026-08-27 — Redis can survive losing a node `api 0.94.0`
**Nothing to do on Docker Compose.** Every setting below is optional and absent by default, and an **Nothing to do on Docker Compose.** Every setting below is optional and absent by default, and an