v0.91.2 — log a healthy credential probe at Debug

The probe logged only on failure, so a healthy one was silent: "no auth_failed" was
indistinguishable from "never probed", and the leg could not be demonstrated as running.
That is exactly how v0.91.0 shipped it inert unnoticed.
This commit is contained in:
2026-07-21 10:20:10 +02:00
parent dcf3a5530b
commit d4a7a5bad3
2 changed files with 11 additions and 0 deletions
+7
View File
@@ -1,3 +1,10 @@
## v0.91.2 — a healthy credential probe is observable (2026-07-21)
The probe logged only on failure, so a healthy one was silent — which makes "no `auth_failed`"
indistinguishable from "never probed", and leaves the leg impossible to demonstrate as running. That
is precisely how v0.91.0 shipped it inert without anyone noticing. Adds a Debug line on success
naming the storage: free in normal operation, one log level away when it matters.
## v0.91.1 — wire the credential probe (v0.91.0 shipped the seam inert) (2026-07-21)
**Supersedes v0.91.0; that artifact is materially incomplete — do not vouch it.**
+4
View File
@@ -100,6 +100,10 @@ func (r *LiveSnapshotReporter) probeAuthAndReport(ctx context.Context, t Target)
err := r.probeAuth(ctx, t)
switch {
case err == nil:
// Logged even on success: a safety mechanism that is silent when healthy cannot be shown to be
// RUNNING, and "no auth_failed" is indistinguishable from "never probed". Debug level, so it
// costs nothing in normal operation but is one log-level away when it matters.
r.log.Debug("pbs: credential probe OK", "storage", t.StorageID, "datastore", t.Datastore)
r.authSink.NoteAuthResult(t.StorageID, false, "")
case errors.Is(err, ErrUnauthorized):
// The one case that is TERMINAL and actionable: the credential is rejected, not the network.