Skip to content

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.