Configurationmedium5-8 years

A production incident is fixed by editing `application-prod.yml` to raise a timeout from 500ms to 3000ms, and the deploy confirms the value took effect. Six weeks later the timeouts return, and the file still says 3000. What actually happened, and how would you have found it faster?

During the incident, someone almost certainly also set an environment variable on the running container to make the change take effect immediately — and environment variables sit above every configuration file in Spring's precedence order, so from that moment on, the environment variable was the thing actually supplying the value, not the YAML edit. The next deployment, created fresh from a clean template, didn't inherit that environment variable, so the file's own value — which had been sitting there unused, silently overridden the whole time — was suddenly the one that mattered again, and it was wrong for having never been the source of truth to begin with. The fast way to find this: ask the running application which property source actually supplied the value, via the Actuator /actuator/env endpoint, rather than re-reading the file and assuming it's authoritative.

The lesson behind it →
More on Configuration