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;

Reply via email to