make bao readers want swarm-bao-pki and drop its start limit
A pki start refused by its start limit failed every reader that Requires= it with `dependency`. That leaves a unit inactive, not failed, so Restart=on-failure never fired and readers without a refresh timer never ran again (#5381: grafana 502 for ~43 min). Readers and granting units now Wants= + After= pki; one whose leaf is still missing fails its login with exit 1 into its existing retry. pki gets StartLimitIntervalSec=0: it is deliberately not RemainAfterExit, so each reader's start re-runs it.
This commit is contained in:
parent
141be16c6d
commit
265f8a47cc
12 changed files with 95 additions and 46 deletions
|
|
@ -162,26 +162,32 @@ let
|
|||
&& !(builtins.elem "hive-c0re.service" (u.requires or [ ]));
|
||||
}
|
||||
{
|
||||
# `Requires=` on a unit that does not exist fails the job, and nothing
|
||||
# local mints certificates off-host — so this orders against nothing.
|
||||
# Eval cannot see that failure; only the empty list here stands in for it.
|
||||
name = "an off-host reader requires no unit the store's host would have provided";
|
||||
# Nothing local mints certificates off-host, so this orders against
|
||||
# nothing there.
|
||||
name = "an off-host reader names no unit the store's host would have provided";
|
||||
# Membership first, then the value: indexing a missing unit throws, and a
|
||||
# table that reports which property broke must not be the thing that dies.
|
||||
ok =
|
||||
let
|
||||
s = baoRemoteReader.systemd.services;
|
||||
u = s.swarm-bao-queue-agent;
|
||||
in
|
||||
s ? swarm-bao-queue-agent && s.swarm-bao-queue-agent.requires == [ ];
|
||||
s ? swarm-bao-queue-agent && !(lib.elem "swarm-bao-pki.service" (u.after ++ u.wants ++ u.requires));
|
||||
}
|
||||
{
|
||||
# Presence control for the case above: the list is conditional, not gone.
|
||||
name = "a co-located reader still orders after the local pki unit";
|
||||
# Wanted, never required: a refused pki start fails a requirer's job with
|
||||
# `dependency`, which its `Restart=on-failure` never retries.
|
||||
name = "a co-located reader still orders after and wants the local pki unit, and does not require it";
|
||||
ok =
|
||||
let
|
||||
s = baoWithMatrix.systemd.services;
|
||||
u = s.swarm-bao-queue-agent;
|
||||
in
|
||||
s ? swarm-bao-queue-agent && s.swarm-bao-queue-agent.requires == [ "swarm-bao-pki.service" ];
|
||||
s ? swarm-bao-queue-agent
|
||||
&& lib.elem "swarm-bao-pki.service" u.after
|
||||
&& lib.elem "swarm-bao-pki.service" u.wants
|
||||
&& u.requires == [ ];
|
||||
}
|
||||
{
|
||||
# Nothing asserted this script before, which is how it kept a branch that
|
||||
|
|
|
|||
Loading…
Reference in a new issue