back off the matrix daemon's restarts so a homeserver outage can't flood the store with logins
This commit is contained in:
parent
81a57a9f81
commit
2eb46c562b
2 changed files with 17 additions and 0 deletions
|
|
@ -396,6 +396,13 @@ in
|
||||||
# non-zero exit, which `on-failure` already restarts.
|
# non-zero exit, which `on-failure` already restarts.
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
RestartSec = 5;
|
RestartSec = 5;
|
||||||
|
# Each start logs in to the store before its first homeserver call, so
|
||||||
|
# a down homeserver must not restart it every `RestartSec`. systemd
|
||||||
|
# grows the delay exponentially from `RestartSec` to `RestartMaxDelaySec`
|
||||||
|
# over `RestartSteps` restarts and resets it after a successful run
|
||||||
|
# (systemd.service(5)).
|
||||||
|
RestartSteps = 6;
|
||||||
|
RestartMaxDelaySec = 300;
|
||||||
# The daemon exits 75 (`ACCOUNTS_CHANGED_EXIT` in
|
# The daemon exits 75 (`ACCOUNTS_CHANGED_EXIT` in
|
||||||
# hive-matrix-mcp/src/main.rs) when the store's linked accounts change:
|
# hive-matrix-mcp/src/main.rs) when the store's linked accounts change:
|
||||||
# a clean exit that must still restart it onto the new set.
|
# a clean exit that must still restart it onto the new set.
|
||||||
|
|
|
||||||
|
|
@ -168,6 +168,16 @@ let
|
||||||
ok =
|
ok =
|
||||||
agentMatrixBao.systemd.timers.hive-matrix-daemon.timerConfig.OnUnitInactiveSec or null == "5min";
|
agentMatrixBao.systemd.timers.hive-matrix-daemon.timerConfig.OnUnitInactiveSec or null == "5min";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
# A homeserver outage fails every start, and each start logs in to the
|
||||||
|
# store: the restart delay must grow rather than stay at `RestartSec`.
|
||||||
|
name = "the matrix daemon backs off between restarts";
|
||||||
|
ok =
|
||||||
|
let
|
||||||
|
c = (daemon agentMatrixBao).serviceConfig;
|
||||||
|
in
|
||||||
|
c.RestartSteps or 0 > 0 && c.RestartMaxDelaySec or 0 > c.RestartSec;
|
||||||
|
}
|
||||||
{
|
{
|
||||||
# The absence arm for the four above: with no store, no identity, no
|
# The absence arm for the four above: with no store, no identity, no
|
||||||
# timer, and the file is the whole mechanism.
|
# timer, and the file is the whole mechanism.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue