diff options
Diffstat (limited to 'controller-api/src/main')
-rw-r--r-- | controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchive.java | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchive.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchive.java index f6ffd711f51..8ca4c37a85a 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchive.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchive.java @@ -236,6 +236,7 @@ public class SystemFlagsDataArchive { static String normalizeJson(String json, Set<ZoneId> zones) { JsonNode root = uncheck(() -> mapper.readTree(json)); removeCommentsRecursively(root); + removeNullRuleValues(root); verifyValues(root, zones); return root.toString(); } @@ -299,6 +300,22 @@ public class SystemFlagsDataArchive { node.forEach(SystemFlagsDataArchive::removeCommentsRecursively); } + private static void removeNullRuleValues(JsonNode root) { + if (root instanceof ObjectNode objectNode) { + JsonNode rules = objectNode.get("rules"); + if (rules != null) { + rules.forEach(ruleNode -> { + if (ruleNode instanceof ObjectNode rule) { + JsonNode value = rule.get("value"); + if (value != null && value.isNull()) { + rule.remove("value"); + } + } + }); + } + } + } + private static String toFilePath(FlagId flagId, String filename) { return "flags/" + flagId.toString() + "/" + filename; } |