start the forge and github pollers when their token lands late
Both pollers wait about ten minutes for the agent's token, then exit 0. Under Restart=on-failure that exit is final, and nothing started them again, so a token minted or placed after the window left the agent without notifications until its container restarted. Add a path unit per poller with PathChanged on the token file(s) the poller reads, the shape forge-avatar-sync already uses. A path unit starts its service only when it is not running, so a poller that found its token is untouched. The github path unit is gated on github.enable like its service. Container-side: it ships with the agent's next rebuild, and an agent on an older rev keeps the old behaviour. Closes #6179
This commit is contained in:
parent
0c78ccbf84
commit
fae9398295
1 changed files with 70 additions and 1 deletions
|
|
@ -102,6 +102,21 @@ let
|
|||
name = "the fetch runs before the github poller starts";
|
||||
ok = builtins.elem "hive-github-notify.service" (fetchUnit agentGithubBao).before;
|
||||
}
|
||||
{
|
||||
# The poller waits for the token about ten minutes and then exits 0, which
|
||||
# `on-failure` does not restart; the path unit starts it when the token lands.
|
||||
name = "a token that lands after the github poller gave up starts it again";
|
||||
ok =
|
||||
let
|
||||
name = agentGithubBao.services.hyperhive.agent.user.name;
|
||||
path = agentGithubBao.systemd.paths.hive-github-notify;
|
||||
in
|
||||
path.pathConfig.PathChanged == "/agents/${name}/state/github-token"
|
||||
&& path.wantedBy == [ "multi-user.target" ]
|
||||
&& agentGithubBao.systemd.services ? hive-github-notify
|
||||
&& !(agentGithubOff.systemd.paths ? hive-github-notify)
|
||||
&& !(agentGithubOff.systemd.services ? hive-github-notify);
|
||||
}
|
||||
{
|
||||
name = "the fetch re-runs every two minutes";
|
||||
ok = agentGithubBao.systemd.timers.hive-agent-github-token.timerConfig.OnUnitInactiveSec == "2min";
|
||||
|
|
|
|||
Loading…
Reference in a new issue