What: the mqtt-account-controller image goes back from main-982231a to main-1d03144. The 4 H&T entries (shelly-35..38, wake:) come out of mqtt-accounts.yaml.
Why: since the 15:21Z rollout, the pod has been Running but never Ready (/healthz 503, 88 probe failures, 0 restarts). Broker log: Client mqtt-account-controller been disconnected by administrative action 2 ms after the controller logged adding wake role to controller client. After that, every reconnect is kicked about 45 ms after CONNECT (14 of 14 since 15:21). Mosquitto dynsec kicks a client when its roles are modified. The new image changes its own client's roles, so it kicks itself, and every dynsec call times out (listClients: publish: timeout). Result: no account reconciliation and no wake watch. Alerts: KubePodNotReady and KubeDeploymentReplicasMismatch.
Safe: only the controller pod restarts. The H&Ts 35-38 still connect as u'shellies' (broker log 16:0xZ), so deleting their unused accounts locks nobody out. Other accounts are untouched.
Verify after merge: the pod turns Ready, the broker log shows no more kicks, and the alerts resolve.
Revert: revert this PR. It re-lands #1183 and only makes sense once the controller is fixed.
Reverts #1183 (merge 2f20f214). REN-1167.
**What:** the mqtt-account-controller image goes back from `main-982231a` to `main-1d03144`. The 4 H&T entries (shelly-35..38, `wake:`) come out of `mqtt-accounts.yaml`.
**Why:** since the 15:21Z rollout, the pod has been Running but never Ready (`/healthz` 503, 88 probe failures, 0 restarts). Broker log: `Client mqtt-account-controller been disconnected by administrative action` 2 ms after the controller logged `adding wake role to controller client`. After that, every reconnect is kicked about 45 ms after CONNECT (14 of 14 since 15:21). Mosquitto dynsec kicks a client when its roles are modified. The new image changes its own client's roles, so it kicks itself, and every dynsec call times out (`listClients: publish: timeout`). Result: no account reconciliation and no wake watch. Alerts: KubePodNotReady and KubeDeploymentReplicasMismatch.
**Safe:** only the controller pod restarts. The H&Ts 35-38 still connect as `u'shellies'` (broker log 16:0xZ), so deleting their unused accounts locks nobody out. Other accounts are untouched.
**Verify after merge:** the pod turns Ready, the broker log shows no more kicks, and the alerts resolve.
**Revert:** revert this PR. It re-lands #1183 and only makes sense once the controller is fixed.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Reverts homelab#1183 (merge 2f20f214). Controller main-982231a adds the
wake role to its own dynsec client; the broker kicks the client on that
("disconnected by administrative action" 45 ms after every connect), so
the controller never holds a connection and /healthz stays 503.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Premise (live, 16:13Z): pod mqtt-account-controller-f876cc745-9ldsv 0/1 Running 53m, image main-982231a. Controller log every 2 min: reconcile incomplete: dynsec listClients: publish: timeout and wake subscribe not currently connected. Broker log: each controller CONNECT followed by been disconnected by administrative action in the same second. The cause is #1183's image, so reverting it targets the cause.
Diff: exact inverse of #1183 (checked line by line): image back to main-1d03144 (the previous master image, 9b149fea), shelly-35..38 out of mqtt-accounts.yaml. CI success (3/3).
Lockout risk: H&Ts 35-38 still log in as u'shellies' (broker log 16:03Z shellyplusht-08b61fcea690, shellyhtg3-ecda3bc0b6a0). Reconcile never finished and no wake subscribe succeeded, so no password was pushed to them; removing their accounts locks nobody out.
What breaks if wrong: only the controller pod restarts; HA and broker untouched; no window needed. Who notices: KubePodNotReady stays firing. Undo: revert this PR. Merge stays on REN-1170.
Approved at 6ddb81961f4e901b5c8a5346faebd9e99445c781.
Premise (live, 16:13Z): pod mqtt-account-controller-f876cc745-9ldsv 0/1 Running 53m, image main-982231a. Controller log every 2 min: `reconcile incomplete: dynsec listClients: publish: timeout` and wake subscribe `not currently connected`. Broker log: each controller CONNECT followed by `been disconnected by administrative action` in the same second. The cause is #1183's image, so reverting it targets the cause.
Diff: exact inverse of #1183 (checked line by line): image back to main-1d03144 (the previous master image, 9b149fea), shelly-35..38 out of mqtt-accounts.yaml. CI success (3/3).
Lockout risk: H&Ts 35-38 still log in as u'shellies' (broker log 16:03Z shellyplusht-08b61fcea690, shellyhtg3-ecda3bc0b6a0). Reconcile never finished and no wake subscribe succeeded, so no password was pushed to them; removing their accounts locks nobody out.
What breaks if wrong: only the controller pod restarts; HA and broker untouched; no window needed. Who notices: KubePodNotReady stays firing. Undo: revert this PR. Merge stays on REN-1170.
Ghost
merged commit efb3fc2ec9 into master2026-10-07 16:28:13 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Reverts #1183 (merge
2f20f214). REN-1167.What: the mqtt-account-controller image goes back from
main-982231atomain-1d03144. The 4 H&T entries (shelly-35..38,wake:) come out ofmqtt-accounts.yaml.Why: since the 15:21Z rollout, the pod has been Running but never Ready (
/healthz503, 88 probe failures, 0 restarts). Broker log:Client mqtt-account-controller been disconnected by administrative action2 ms after the controller loggedadding wake role to controller client. After that, every reconnect is kicked about 45 ms after CONNECT (14 of 14 since 15:21). Mosquitto dynsec kicks a client when its roles are modified. The new image changes its own client's roles, so it kicks itself, and every dynsec call times out (listClients: publish: timeout). Result: no account reconciliation and no wake watch. Alerts: KubePodNotReady and KubeDeploymentReplicasMismatch.Safe: only the controller pod restarts. The H&Ts 35-38 still connect as
u'shellies'(broker log 16:0xZ), so deleting their unused accounts locks nobody out. Other accounts are untouched.Verify after merge: the pod turns Ready, the broker log shows no more kicks, and the alerts resolve.
Revert: revert this PR. It re-lands #1183 and only makes sense once the controller is fixed.
🤖 Generated with Claude Code
Approved at
6ddb81961f.Premise (live, 16:13Z): pod mqtt-account-controller-f876cc745-9ldsv 0/1 Running 53m, image main-982231a. Controller log every 2 min:
reconcile incomplete: dynsec listClients: publish: timeoutand wake subscribenot currently connected. Broker log: each controller CONNECT followed bybeen disconnected by administrative actionin the same second. The cause is #1183's image, so reverting it targets the cause.Diff: exact inverse of #1183 (checked line by line): image back to main-1d03144 (the previous master image,
9b149fea), shelly-35..38 out of mqtt-accounts.yaml. CI success (3/3).Lockout risk: H&Ts 35-38 still log in as u'shellies' (broker log 16:03Z shellyplusht-08b61fcea690, shellyhtg3-ecda3bc0b6a0). Reconcile never finished and no wake subscribe succeeded, so no password was pushed to them; removing their accounts locks nobody out.
What breaks if wrong: only the controller pod restarts; HA and broker untouched; no window needed. Who notices: KubePodNotReady stays firing. Undo: revert this PR. Merge stays on REN-1170.