This is an automated email from the ASF dual-hosted git repository.
gyfora pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/flink-kubernetes-operator.git
The following commit(s) were added to refs/heads/main by this push:
new 70489d93 [FLINK-38479] Problems after upgrading the operator from
1.12.1 to 1.13.0
70489d93 is described below
commit 70489d9376a7216f76c3887abd48a85deb05cebb
Author: Attila Mészáros <[email protected]>
AuthorDate: Tue Nov 4 08:59:41 2025 +0100
[FLINK-38479] Problems after upgrading the operator from 1.12.1 to 1.13.0
---
.../operator/reconciler/diff/ReflectiveDiffBuilder.java | 10 ++++++++--
.../kubernetes/operator/reconciler/diff/SpecDiffTest.java | 14 ++++++++++++++
2 files changed, 22 insertions(+), 2 deletions(-)
diff --git
a/flink-kubernetes-operator/src/main/java/org/apache/flink/kubernetes/operator/reconciler/diff/ReflectiveDiffBuilder.java
b/flink-kubernetes-operator/src/main/java/org/apache/flink/kubernetes/operator/reconciler/diff/ReflectiveDiffBuilder.java
index 385322b4..85613e0c 100644
---
a/flink-kubernetes-operator/src/main/java/org/apache/flink/kubernetes/operator/reconciler/diff/ReflectiveDiffBuilder.java
+++
b/flink-kubernetes-operator/src/main/java/org/apache/flink/kubernetes/operator/reconciler/diff/ReflectiveDiffBuilder.java
@@ -86,8 +86,14 @@ public class ReflectiveDiffBuilder<T> implements
Builder<DiffResult<T>> {
var leftField = readField(field, before, true);
var rightField = readField(field, after, true);
if
(field.getName().equals(FLINK_CONFIGURATION_PROPERTY_NAME)) {
- leftField = ((ConfigObjectNode) leftField).asFlatMap();
- rightField = ((ConfigObjectNode)
rightField).asFlatMap();
+ leftField =
+ leftField == null
+ ? null
+ : ((ConfigObjectNode)
leftField).asFlatMap();
+ rightField =
+ rightField == null
+ ? null
+ : ((ConfigObjectNode)
rightField).asFlatMap();
}
if (field.isAnnotationPresent(SpecDiff.Config.class)
diff --git
a/flink-kubernetes-operator/src/test/java/org/apache/flink/kubernetes/operator/reconciler/diff/SpecDiffTest.java
b/flink-kubernetes-operator/src/test/java/org/apache/flink/kubernetes/operator/reconciler/diff/SpecDiffTest.java
index 13b3c2c4..911576bd 100644
---
a/flink-kubernetes-operator/src/test/java/org/apache/flink/kubernetes/operator/reconciler/diff/SpecDiffTest.java
+++
b/flink-kubernetes-operator/src/test/java/org/apache/flink/kubernetes/operator/reconciler/diff/SpecDiffTest.java
@@ -22,6 +22,7 @@ import org.apache.flink.configuration.CoreOptions;
import org.apache.flink.configuration.PipelineOptions;
import org.apache.flink.kubernetes.operator.TestUtils;
import org.apache.flink.kubernetes.operator.api.diff.DiffType;
+import org.apache.flink.kubernetes.operator.api.spec.ConfigObjectNode;
import org.apache.flink.kubernetes.operator.api.spec.FlinkDeploymentSpec;
import org.apache.flink.kubernetes.operator.api.spec.FlinkSessionJobSpec;
import org.apache.flink.kubernetes.operator.api.spec.FlinkVersion;
@@ -402,6 +403,19 @@ public class SpecDiffTest {
assertEquals(0, diff.getNumDiffs());
}
+ @Test
+ public void testNullFlinkConfiguration() {
+ var left = new FlinkDeploymentSpec();
+ left.setFlinkConfiguration((ConfigObjectNode) null);
+ var right = new FlinkDeploymentSpec();
+
+ // This should fail with NullPointerException because there's no null
check
+ // in ReflectiveDiffBuilder when casting flinkConfiguration to
ConfigObjectNode
+ var diff =
+ new ReflectiveDiffBuilder<>(KubernetesDeploymentMode.NATIVE,
left, right).build();
+ assertEquals(DiffType.IGNORE, diff.getType());
+ }
+
@Value
private static class TestClass {
boolean[] f0;