[ 
https://issues.apache.org/jira/browse/FLINK-40380?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ASF GitHub Bot updated FLINK-40380:
-----------------------------------
    Labels: pull-request-available  (was: )

> Document the runtime configuration and stop jobs from overriding operator 
> config through it
> -------------------------------------------------------------------------------------------
>
>                 Key: FLINK-40380
>                 URL: https://issues.apache.org/jira/browse/FLINK-40380
>             Project: Flink
>          Issue Type: Improvement
>          Components: Kubernetes Operator
>            Reporter: Dennis-Mircea Ciupitu
>            Priority: Major
>              Labels: pull-request-available
>
> h1. Summary
> FLINK-35746 added runtime configuration observation, where the operator reads 
> a job's effective settings from the Flink REST API and layers them over the 
> observed configuration. Two follow-ups are needed: the operator documentation 
> still describes the previous configuration model, and the global job 
> parameters ingested from the REST response are not filtered.
> h1. Documentation is out of date
> The {{Internals -> Startup -> Configuration}} section still describes the 
> model as it was before FLINK-35746, and three statements there are now wrong.
> h2. The configuration count and the Observe row
> The section opens with "Three configurations matter throughout the operator" 
> and lists Default, Deploy and Observe. There is now a fourth source, the 
> runtime configuration, fetched from the cluster and cached separately from 
> the derived configurations.
> The Observe row describes that configuration as derived purely from the last 
> reconciled spec. {{FlinkResourceContext#getObserveConfig}} now layers the 
> runtime configuration on top, so REST-observed values win over the spec.
> h2. The warning is now false
> The section closes with:
> {quote}
> None of these is the running configuration. The operator derives its view 
> from the spec and its own defaults, while the cluster can pick up settings 
> the operator never sees: a config.yaml baked into the image, environment 
> overrides, or properties the job sets programmatically. The configuration a 
> pipeline actually runs with can therefore differ from everything the operator 
> tracks.
> {quote}
> Reading back settings that the job sets programmatically is exactly what 
> FLINK-35746 implemented, so this tells the reader the operator cannot do the 
> thing it now does. A narrower version of the caution is still true and worth 
> keeping, because the mapping covers only a subset of settings and only while 
> the job runs.
> h2. The mechanism is undocumented
> Nothing describes when the runtime configuration is fetched (once per job by 
> the job status observer, skipped for globally terminal jobs), how it is 
> cached (per resource and job id, under the existing config cache limits), 
> which settings it covers, or what happens when a fetch fails.
> h1. Global job parameters are ingested unfiltered
> {{FlinkRuntimeConfigurationUtils#mapJobConfiguration}} copies the job's 
> global parameters wholesale:
> {code:java}
> jobConfig.putAll(execInfo.getGlobalJobParameters());
> {code}
> Every other value produced by that class is an explicit, curated 
> {{ConfigOption}}. This one is unbounded and set by the job, and the result is 
> written over the observed configuration through {{observeConfig::setString}}.
> A job that declares a global parameter matching an operator key, for example 
> under {{kubernetes.operator.}} or {{job.autoscaler.}}, therefore changes how 
> the operator manages that resource, with no indication in the logs. Keys in 
> those namespaces have no legitimate reason to arrive from a job's global 
> parameters, so they should be dropped.
> h1. Expected outcome
> The Configuration section describes the runtime configuration as a 
> first-class source, states that it overrides the observed configuration, and 
> replaces the warning with an accurate account of what the operator can and 
> cannot observe.
> Global job parameters in the operator and autoscaler namespaces are ignored 
> rather than applied, and the drop is logged so it is diagnosable.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to