External Secrets Operator v2.11.0: with its SecretStore not ready, an ExternalSecret retried 1, 4, 8, 16, … seconds apart up to 7 minutes, not per refreshInterval, and synced at its next retry.
When It Runs — Run Report #RR13 · Testing what infrastructure actually does.
Provider · Component: External Secrets Operator · the first sync of an
ExternalSecretwhoseSecretStorebecomes ready late — when the controller retries the failed sync and when the Secret appears, with the flood gate on (its default)
Versions tested: measured — External Secrets Operator v2.11.0 (the current minor release as of 2026-09-28; v2.12.0, v2.13.0, v2.14.0 and v2.15.0, released on 2026-10-06, 2026-10-16, 2026-10-23 and 2026-11-10, were not measured, and v2.15.0 is the current minor release as of 2026-11-10; the project supports only the current minor version, and its support table lists 2.11's end of life as 2026-10-06), a single version. source-read —pkg/controllers/common/common.go,pkg/controllers/secretstore/andpkg/controllers/externalsecret/externalsecret_controller.goat the same tag. The retry backoff of 1 second doubling to a 7-minute cap came with pull request #4339 (merged 2025-01-27) — a boundary taken from the pull request, not measured.
Config profile: a single-nodekindcluster (kind v0.33.0, nodekindest/node:v1.36.4, digest-pinned; Kubernetes 1.36 is the version the project lists for 2.11) on a dedicated test VM; the official Helm chart 2.11.0 with the controller's log level atdebug; aSecretStoreusing thekubernetesprovider against the same cluster, authenticating as a service account that exists from the start but gets its permission to read Secrets (aRoleand aRoleBinding) late; anExternalSecretwithrefreshInterval: 30s; three schedules — the store ready first (P0), the store and theExternalSecretapplied together with the permission 60 seconds later (P1), and the store first, theExternalSecret60 seconds later and the permission 600 seconds after the store (P2) — plus a repeat of P2 with an annotation change on theExternalSecretonce the store is ready (P3), all polled every 5 seconds.
Verified on: 2026-11-14 (desk sources re-checked; v2.15.0 was the current minor release) · lab measured 2026-09-28 on v2.11.0.
Affects: External Secrets Operator v2.11.0ExternalSecrets whose first sync fails because theirSecretStoreis not ready yet: the controller retried on its failure backoff — gaps of 1, 4, 8, 16, … seconds, doubling to a 7-minute cap — not everyrefreshInterval, and did not retry when the store became ready; the Secret appeared at the next backoff retry, 64 seconds after the store became ready in one of our runs and 60 seconds in another.
TL;DR: On External Secrets Operator v2.11.0, anExternalSecretcreated while itsSecretStorewas not yet ready retried on the controller's failure backoff — gaps of 1, 4, 8, 16, … seconds, doubling to a 7-minute cap — not on itsrefreshInterval: 30s, and did not retry when the store became ready: its Secret appeared only at the next backoff retry, 65 seconds after the store's permission was fixed in one schedule and 389 seconds in the other.
Full report: https://whenitruns.substack.com/p/when-an-externalsecret-runs-on-backoff
Reproduction repo: https://github.com/whenitruns/when-an-externalsecret-runs-on-backoff-behind-a-late-secretstore
