atlas
be7eaa8181
refresh-consumer: compare mtimes locale-independently so an unchanged secret doesn't restart its unit
...
`refresh_unit` read the credential file's mtime with
`stat -c %.6Y | tr -d .`. coreutils prints that fraction with the
locale's decimal separator, so on a host whose locale uses a comma
(muede-lpt2: `1791232888,193159`) `tr` stripped nothing, the `-le`
against the unit's start errored, the "unchanged" early return was
skipped, and every run try-restarted the consumer. Every unit on a
store-refresh timer was restarted every ~10 minutes; for
`swarm-bao-ci-runner` that is `gitea-runner-swarm`, which killed every
CI job running at the time.
The mtime is now read with `date -r … +%s%6N`, the same digit-only
format the start time already used (`date -d … +%s%6N` on systemd's
fixed English timestamp), so neither side has a separator for a locale
to change.
A value that still does not read as digits — an unparsable start time,
a missing file — now restarts nothing and logs at `err`. Skipping on
doubt rather than restarting on doubt: the file's mtime is kept, so a
genuinely changed credential still restarts its consumer on the first
run that can read both times, whereas restarting on doubt restarts it
on every run, which is this bug. Both reads also fall back to empty
instead of aborting the caller's `set -e` script.
`script-test-refresh-consumer` runs the rendered helper under
`de_DE.UTF-8` against a stub `systemctl`, and checks first that `stat`
really prints a comma there. The helper on main fails 14 of its
assertions.
Fixes #5230
2026-10-13 17:00:56 +02:00
..
hive-c0re
swarm-logs: authenticate as the agent with its own queue secret
2026-10-13 08:38:05 +02:00
hive-forge
nix: re-run the host's store fetches on a ten-minute timer
2026-10-13 00:03:20 +02:00
hive-gateway
swarm CA: describe the store's pki root as the only anchor in docs and comments
2026-10-05 21:17:10 +02:00
lib
refresh-consumer: compare mtimes locale-independently so an unchanged secret doesn't restart its unit
2026-10-13 17:00:56 +02:00
swarm-grafana /dashboards
swarm-grafana: drop stale windows from the subscription usage line, match sibling panel interval
2026-10-07 23:54:53 +02:00
bao-bootstrap-policy.hcl
bao: disable the unused approle auth method, declaratively
2026-09-28 22:58:36 +02:00
default.nix
swarm-logs-auth: check agent tokens on the log store's query route
2026-10-13 08:38:05 +02:00
deploy.nix
nix: allSwarmServices turns on the review classifier
2026-10-12 13:11:21 +02:00
glue-bao-readers-policy-order.nix
grafana: mint the admin password into the store and apply it on every start
2026-10-12 15:16:53 +02:00
glue-bao-tls.nix
swarm-logs-auth: check agent tokens on the log store's query route
2026-10-13 08:38:05 +02:00
glue-bao-ui-oidc-client.nix
bao: OIDC login to the browser UI via authelia, as a metadata-only viewer
2026-09-28 19:56:38 +02:00
glue-controller-bao-identity.nix
nix: gate hive-c0re on deploy.hive-controller.enable, drop hyperhive.enable
2026-09-26 01:19:49 +02:00
glue-controller-oidc-client.nix
swarm: OIDC clients registered wherever authelia runs; nats + matrix secrets from bao
2026-10-05 09:58:02 +02:00
glue-forge-oidc-client.nix
nix: gate hive-c0re on deploy.hive-controller.enable, drop hyperhive.enable
2026-09-26 01:19:49 +02:00
glue-grafana-oidc-client.nix
nix: gate hive-c0re on deploy.hive-controller.enable, drop hyperhive.enable
2026-09-26 01:19:49 +02:00
glue-hive-tls-bao-identity.nix
hive-tls: the gateway leaf uses the services-issuer identity, not a hive's
2026-10-06 14:54:07 +02:00
glue-logs-auth-bao-identity.nix
swarm-logs-auth: check agent tokens on the log store's query route
2026-10-13 08:38:05 +02:00
glue-matrix-ctl-bao-identity.nix
swarm-nats, matrix: the queue's and matrix-ctl's store identity paths are their own, not the hive's
2026-10-06 12:04:48 +02:00
glue-matrix-oidc-client.nix
swarm: OIDC clients registered wherever authelia runs; nats + matrix secrets from bao
2026-10-05 09:58:02 +02:00
glue-nats-auth-bao-identity.nix
swarm-nats: the auth responder's store identity path is its own, not the hive's
2026-10-06 10:04:30 +02:00
glue-nats-bao-identity.nix
swarm-nats, matrix: the queue's and matrix-ctl's store identity paths are their own, not the hive's
2026-10-06 12:04:48 +02:00
glue-nats-oidc-client.nix
swarm: OIDC clients registered wherever authelia runs; nats + matrix secrets from bao
2026-10-05 09:58:02 +02:00
glue-queue-agent-credential.nix
swarm-bao-pki: sign every other hive's three store leaves
2026-10-12 21:41:28 +02:00
glue-review-classifier-oidc-client.nix
nix: run the review classifier in a container of its own when a host enables it
2026-10-12 13:11:21 +02:00
glue-secret-publisher-bao-identity.nix
nix: gate hive-c0re on deploy.hive-controller.enable, drop hyperhive.enable
2026-09-26 01:19:49 +02:00
glue-swarm-bao-otel-oidc-client.nix
ops: update option pointers after grafana/bao split
2026-10-01 09:53:04 +02:00
glue-swarm-otel-oidc-client.nix
ops: update option pointers after otel split
2026-10-01 13:00:40 +02:00
hive-matrix-service.nix
swarm-controller: revoke matrix admin from former operators
2026-10-05 12:39:02 +02:00
hive-matrix.nix
nix: re-run the host's store fetches on a ten-minute timer
2026-10-13 00:03:20 +02:00
hive-network.nix
swarm-ci-runner: run the forge CI runner as a swarm service
2026-10-05 13:55:37 +02:00
hive-priv.nix
swarm-ci-runner: run the forge CI runner as a swarm service
2026-10-05 13:55:37 +02:00
hive-tls.nix
hive-tls: the root fetch presents the hive identity, as on main
2026-10-06 14:54:07 +02:00
host-ca-removed.nix
hive CA: catch a deleted CA file however its path is spelled
2026-10-05 21:17:10 +02:00
hyperhive.nix
nix: finish the current-behaviour comment sweep in touched files
2026-10-05 09:58:57 +02:00
local-defaults.nix
swarm-nats: take the callout issuer and user keys from the store
2026-10-06 14:53:33 +02:00
nats-callout-removed.nix
nats-callout-removed: remove the container's OIDC secret copy here, ungated
2026-10-06 15:25:29 +02:00
otel.nix
nix: re-run the host's store fetches on a ten-minute timer
2026-10-13 00:03:20 +02:00
stylix-theme.nix
swarm-ui: apply the operator's stylix theme, same as the dashboard already does
2026-08-24 14:28:25 +02:00
swarm-authelia-service.nix
swarmctl: log in with the operator's own SSO account and reach the controller through the swarm domain
2026-10-12 01:25:58 +02:00
swarm-authelia.nix
swarmctl: log in with the operator's own SSO account and reach the controller through the swarm domain
2026-10-12 01:25:58 +02:00
swarm-bao-service.nix
nix: split swarm-bao into service and deploy-mode files
2026-10-01 09:37:36 +02:00
swarm-bao.nix
swarm-logs-auth: check agent tokens on the log store's query route
2026-10-13 08:38:05 +02:00
swarm-ci-runner.nix
nix: re-run the host's store fetches on a ten-minute timer
2026-10-13 00:03:20 +02:00
swarm-controller.nix
swarm-bao-forge-publisher starts on the deploy that adds it
2026-10-08 13:59:26 +02:00
swarm-grafana-service.nix
nix: finish the "moved to" comment sweep
2026-10-05 09:59:02 +02:00
swarm-grafana.nix
grafana: query VictoriaMetrics by its swarm domain
2026-10-13 08:08:17 +02:00
swarm-nats-service.nix
nix: finish the "moved to" comment sweep
2026-10-05 09:59:02 +02:00
swarm-nats.nix
nix: run the review classifier in a container of its own when a host enables it
2026-10-12 13:11:21 +02:00
swarm-otel-service.nix
swarm-otel: name the port-collision assertion instead of pointing below
2026-10-05 19:22:55 +02:00
swarm-otel.nix
nix: re-run the host's store fetches on a ten-minute timer
2026-10-13 00:03:20 +02:00
swarm-peers-removed.nix
swarm CA: retire the host-held root CA, the store holds the only anchor
2026-10-05 21:17:10 +02:00
swarm-required-services.nix
nix: allSwarmServices turns on the review classifier
2026-10-12 13:11:21 +02:00
swarm-review-classifier.nix
nix: allSwarmServices turns on the review classifier
2026-10-12 13:11:21 +02:00
swarm-secret-publisher.nix
nix: run the review classifier in a container of its own when a host enables it
2026-10-12 13:11:21 +02:00
swarm-snapshot-store.nix
deploy: move the wireguard mesh out of the namespace hives read
2026-09-07 14:24:52 +02:00
swarm-ui.nix
swarmctl: log in with the operator's own SSO account and reach the controller through the swarm domain
2026-10-12 01:25:58 +02:00
swarm-victorialogs-service.nix
nix: split swarm-victorialogs into service and deploy-mode files
2026-10-01 10:03:55 +02:00
swarm-victorialogs.nix
swarm-logs-auth: check agent tokens on the log store's query route
2026-10-13 08:38:05 +02:00
swarm-victoriametrics-service.nix
nix: follow-ups from the service/deploy split
2026-10-05 19:12:46 +02:00
swarm-victoriametrics.nix
swarm-victoriametrics: forward only the store's read API
2026-10-13 08:13:37 +02:00
swarm-wireguard.nix
swarm options: no swarm.* value depends on a deploy option or this host's hive
2026-10-04 18:13:47 +02:00
swarm.nix
swarm-logs-auth: check agent tokens on the log store's query route
2026-10-13 08:38:05 +02:00