in flink-kubernetes-operator/src/main/java/org/apache/flink/kubernetes/operator/utils/FlinkUtils.java [113:142]
private static void mergeArray(
ArrayNode toChildNode, ArrayNode fromChildNode, boolean mergeArraysByName) {
if (namesDefined(toChildNode) && namesDefined(fromChildNode) && mergeArraysByName) {
var toGrouped = groupByName(toChildNode);
var fromGrouped = groupByName(fromChildNode);
fromGrouped.forEach(
(name, fromElement) ->
toGrouped.compute(
name,
(n, toElement) -> {
if (toElement == null) {
return fromElement;
}
mergeInto(toElement, fromElement, mergeArraysByName);
return toElement;
}));
toChildNode.removeAll();
toGrouped.values().forEach(toChildNode::add);
} else {
for (int i = 0; i < fromChildNode.size(); i++) {
JsonNode updatedChildNode = fromChildNode.get(i);
if (toChildNode.size() <= i) {
// append new node
toChildNode.add(updatedChildNode);
}
mergeInto(toChildNode.get(i), updatedChildNode, mergeArraysByName);
}
}
}