yuanfenghu created FLINK-38145:
----------------------------------
Summary: Fix ReflectiveDiffBuilder config comparison to properly
handle deleted configuration entries
Key: FLINK-38145
URL: https://issues.apache.org/jira/browse/FLINK-38145
Project: Flink
Issue Type: Improvement
Components: Kubernetes Operator
Affects Versions: kubernetes-operator-1.12.1
Environment: flink kubernetes 1.10
Reporter: yuanfenghu
Fix For: kubernetes-operator-1.13.0
h2. Problem description
When a configuration item in FlinkDeployment Spec is deleted (such as removing
a configuration item from FlinkConfiguration), the deleted configuration still
exists in the running Flink cluster after redeployment and has not been
properly cleaned up.
h2. The root cause of the problem
lies in the configDiff method of ReflectiveDiffBuilder. java. When comparing
old and new configurations, this method merges all the keys of the left (old
configuration) and right (new configuration) maps into a key set for comparison:
{code:java}
//代码占位符
Set<String> keys = new HashSet<>();
keys.addAll(left.keySet());
keys.addAll(right.keySet()); {code}
This results in the fact that even if a configuration item is removed in the
new configuration, it will still be included in the diff comparison and thus
not correctly recognized as a configuration that needs to be cleaned up.
h2. Scope of influence
-All Map type fields annotated with @ SpecDiff. Config
- primarily affecting FlinkDeployment Spec's FlinnConfiguration field
- may result in configuration drift and inconsistent cluster states
--
This message was sent by Atlassian Jira
(v8.20.10#820010)