A named push flushed every other machine whose declaration differed from what it was last sent (hq ADR 0083). Under an upgrade policy of `record`, or a plan still waiting on its first machine (ADR 0218), every machine running the module differs, so `push <one>` sent the held build to all of them (hq issue 259). Each send now records which build of each module it carried (node.sent_builds, migration 0061). The cascade, and the bus holder added to a named push, skip a machine any of whose modules would move to a build its policy records or an open plan has not sent it, and say which module, which build, why, and that `push <node>` sends it. A machine whose last send was not recorded is held until it is named. The named machine itself, a whole-mesh push and `push --behind` are unchanged.
15 lines
1.0 KiB
SQL
15 lines
1.0 KiB
SQL
-- A send records the build of each module it carried (novox/hq issue 259, ADR 0221).
|
|
--
|
|
-- A named push ends by sending every other machine whose declaration differs from what it was last
|
|
-- sent (ADR 0083). Read from the declaration's digest alone, a module whose upgrade policy records
|
|
-- rather than rolls out, or whose plan sends one machine first (ADR 0218), made every machine running
|
|
-- it differ, so `push <one machine>` sent all of them the build the policy was holding back. Which
|
|
-- build of each module a machine was last sent is what tells a held upgrade from a consequence of the
|
|
-- push, and it is not in a digest.
|
|
--
|
|
-- Module name to the commit its build was made from — the module's `built_from` when the declaration
|
|
-- was composed, empty for a module the mesh holds without a source. NULL for a machine last sent
|
|
-- before this was kept, or sent a declaration by hand: what it carried is not known, and the push
|
|
-- treats such a machine as held until it is pushed by name.
|
|
alter table node add column sent_builds jsonb;
|