Skip to content

Commit fd5142a

Browse files
committed
[FLINK-38479] Problems after upgrading the operator from 1.12.1 to 1.13.0
Signed-off-by: Attila Mészáros <[email protected]>
1 parent 3e3cb58 commit fd5142a

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

flink-kubernetes-operator/src/main/java/org/apache/flink/kubernetes/operator/reconciler/diff/ReflectiveDiffBuilder.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,14 @@ private void appendFields(final Class<?> clazz) {
8686
var leftField = readField(field, before, true);
8787
var rightField = readField(field, after, true);
8888
if (field.getName().equals(FLINK_CONFIGURATION_PROPERTY_NAME)) {
89-
leftField = ((ConfigObjectNode) leftField).asFlatMap();
90-
rightField = ((ConfigObjectNode) rightField).asFlatMap();
89+
leftField =
90+
leftField == null
91+
? null
92+
: ((ConfigObjectNode) leftField).asFlatMap();
93+
rightField =
94+
rightField == null
95+
? null
96+
: ((ConfigObjectNode) rightField).asFlatMap();
9197
}
9298

9399
if (field.isAnnotationPresent(SpecDiff.Config.class)

flink-kubernetes-operator/src/test/java/org/apache/flink/kubernetes/operator/reconciler/diff/SpecDiffTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.apache.flink.configuration.PipelineOptions;
2323
import org.apache.flink.kubernetes.operator.TestUtils;
2424
import org.apache.flink.kubernetes.operator.api.diff.DiffType;
25+
import org.apache.flink.kubernetes.operator.api.spec.ConfigObjectNode;
2526
import org.apache.flink.kubernetes.operator.api.spec.FlinkDeploymentSpec;
2627
import org.apache.flink.kubernetes.operator.api.spec.FlinkSessionJobSpec;
2728
import org.apache.flink.kubernetes.operator.api.spec.FlinkVersion;
@@ -402,6 +403,19 @@ public void testSavepointNonceDiff() {
402403
assertEquals(0, diff.getNumDiffs());
403404
}
404405

406+
@Test
407+
public void testNullFlinkConfiguration() {
408+
var left = new FlinkDeploymentSpec();
409+
left.setFlinkConfiguration((ConfigObjectNode) null);
410+
var right = new FlinkDeploymentSpec();
411+
412+
// This should fail with NullPointerException because there's no null check
413+
// in ReflectiveDiffBuilder when casting flinkConfiguration to ConfigObjectNode
414+
var diff =
415+
new ReflectiveDiffBuilder<>(KubernetesDeploymentMode.NATIVE, left, right).build();
416+
assertEquals(DiffType.IGNORE, diff.getType());
417+
}
418+
405419
@Value
406420
private static class TestClass {
407421
boolean[] f0;

0 commit comments

Comments
 (0)