diff options
author | Valerij Fredriksen <freva@users.noreply.github.com> | 2021-06-15 14:43:32 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-15 14:43:32 +0200 |
commit | 79ef7e0298e10f007646f19f6bcabe6cd03932aa (patch) | |
tree | 47d1c29645f6093f2303d33500fee0de6be985cb | |
parent | fa5312e8cc46c008e180812dd7002d1eb6c9bc92 (diff) | |
parent | 16d9519d5f7280a74d2ea804b4e3dc4be12a164a (diff) |
Merge pull request #18273 from vespa-engine/olaa/throw-if-illegal-type
Throw if illegal type in meta request
-rw-r--r-- | controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/horizon/TsdbQueryRewriter.java | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/horizon/TsdbQueryRewriter.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/horizon/TsdbQueryRewriter.java index 2060336487d..e034be46063 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/horizon/TsdbQueryRewriter.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/horizon/TsdbQueryRewriter.java @@ -38,6 +38,7 @@ public class TsdbQueryRewriter { throw new UnauthorizedException(); JsonNode root = mapper.readTree(data); + requireLegalType(root); getField(root, "executionGraph", ArrayNode.class) .ifPresent(graph -> rewriteQueryGraph(graph, authorizedTenants, operator, systemName)); getField(root, "filters", ArrayNode.class) @@ -95,6 +96,13 @@ public class TsdbQueryRewriter { } } + private static void requireLegalType(JsonNode root) { + Optional.ofNullable(root.get("type")) + .map(JsonNode::asText) + .filter(type -> !"TAG_KEYS_AND_VALUES".equals(type)) + .ifPresent(type -> { throw new IllegalArgumentException("Illegal type " + type); }); + } + private static <T extends JsonNode> Optional<T> getField(JsonNode object, String fieldName, Class<T> clazz) { return Optional.ofNullable(object.get(fieldName)).filter(clazz::isInstance).map(clazz::cast); } |