Channel placement¶
Which channel runs on which streamer is decided by the layouter, a central subsystem. The operator does not spread channels across machines: they add streamers and channels, and the layouter recomputes the placement in a run — on input changes, by itself, with no schedule and no manual runs required.
The layouter's defining property is predictability. The placement changes only when its input changes: the set of streamers, the set of channels, their settings. While the input stays the same, run after run produces the same placement: a channel never moves "just because", and every decision taken is recorded together with its reason. What was placed today runs in the same spot tomorrow — until you change the cluster yourself.
The Layouter screen makes those decisions observable: you can see when a run happened, how it ended and how much it changed.
The last run and running by hand¶
The Last run card — the number, the time, the outcome and the counters. The Run now button exists for "I want a recompute now" — right after joining a streamer, say. Three possible answers:
- Run completed — the placement was recomputed.
- Input unchanged, run skipped — nothing changed since the last run, there is nothing to recompute. That is a normal answer, not a refusal.
- A run is already in progress — the layouter is working right now; wait for it.
The run history¶
The table, newest first: when started and finished, the outcome and three counters:
- Upserts — how many server configurations the run wrote;
- Tombstones — how many placements it took down;
- Decisions — how many move decisions it made.
The outcome comes in three kinds: completed; failed — with the text in the last column; torn — the run did not reach the end (or is running right now: a running one has no finish time yet).
A run with zeros in every counter is healthy boredom: the input changed, but nothing had to be moved.
From the channel's side¶
The answer to "why is this channel here" lives on the Layout tab of the channel's page: the current placements — the streamer, the role, the version, the applied mark, the reason for the change and the delivery mark (including rejected with a reason when a streamer refused) — and the placement history below.
The channel's aggregate placement status shows right in the channel list, the Layout column: applied, delivering, stale, rejected, unplaced — the tooltip names the cause or the lagging streamers.
If the channel is misplaced or nowhere¶
- Unplaced. No streamer was found for the channel — most often there is not a single live machine in the cluster. The badge's tooltip names the cause.
- Rejected. A streamer refused the placement — the reason is in the tooltip and on the Layout tab.
- Stale / delivering for over a minute. The configuration is not reaching the streamer — that is a slice delivery question, not a layouter one.
- The channel moved and you do not know why. The history on the Layout tab keeps the reason of every change.