diff options
author | HÃ¥kon Hallingstad <hakon@verizonmedia.com> | 2021-04-01 15:45:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-01 15:45:40 +0200 |
commit | 8ed6cc892f5f13c8100f80b30ae87b45daba0d3f (patch) | |
tree | a46b65f306782e22aa3663f8a0baafb7fcd4f59f /flags | |
parent | 765234ff22ac00da950e9eca1aa85afaa47e3577 (diff) | |
parent | 6e0a640dcb4847b7e32b6800643f42b38748e20e (diff) |
Merge pull request #17256 from vespa-engine/hakonhall/add-cluster-type-dimension-to-container-cpu-cap
Resolve container-cpu-cap based on cluster type and ID
Diffstat (limited to 'flags')
12 files changed, 56 insertions, 4 deletions
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/BooleanFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/BooleanFlag.java index 1245aca65b8..0a4b8a1c5c2 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/BooleanFlag.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/BooleanFlag.java @@ -12,6 +12,11 @@ public class BooleanFlag extends FlagImpl<Boolean, BooleanFlag> { super(id, defaultValue, vector, serializer, source, BooleanFlag::new); } + @Override + public BooleanFlag self() { + return this; + } + public boolean value() { return boxedValue(); } diff --git a/flags/src/main/java/com/yahoo/vespa/flags/DoubleFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/DoubleFlag.java index 8c3974727c6..9d606887715 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/DoubleFlag.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/DoubleFlag.java @@ -12,6 +12,11 @@ public class DoubleFlag extends FlagImpl<Double, DoubleFlag> { super(id, defaultValue, vector, serializer, source, DoubleFlag::new); } + @Override + public DoubleFlag self() { + return this; + } + public double value() { return boxedValue(); } diff --git a/flags/src/main/java/com/yahoo/vespa/flags/FetchVector.java b/flags/src/main/java/com/yahoo/vespa/flags/FetchVector.java index 37849b65adf..ede7bd6a109 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/FetchVector.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/FetchVector.java @@ -33,9 +33,12 @@ public class FetchVector { /** Node type from com.yahoo.config.provision.NodeType::name, e.g. tenant, host, confighost, controller, etc. */ NODE_TYPE, - /** Cluster type from com.yahoo.config.provision.ClusterSpec.Type::name, e.g. content, container, admin */ + /** Cluster type from com.yahoo.config.provision.ClusterSpec.Type::value, e.g. content, container, admin */ CLUSTER_TYPE, + /** Cluster ID from com.yahoo.config.provision.ClusterSpec.Id::value, e.g. cluster-controllers, logserver. */ + CLUSTER_ID, + /** * Fully qualified hostname. * diff --git a/flags/src/main/java/com/yahoo/vespa/flags/Flag.java b/flags/src/main/java/com/yahoo/vespa/flags/Flag.java index 7bf491a39c7..718478ab426 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/Flag.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/Flag.java @@ -1,6 +1,8 @@ // Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.flags; +import java.util.Optional; + /** * Interface for flag. * @@ -12,12 +14,20 @@ public interface Flag<T, F> { /** The flag ID. */ FlagId id(); + /** A generic type-safe method for getting {@code this}. */ + F self(); + /** Returns the flag serializer. */ FlagSerializer<T> serializer(); /** Returns an immutable clone of the current object, except with the dimension set accordingly. */ F with(FetchVector.Dimension dimension, String dimensionValue); + /** Same as {@link #with(FetchVector.Dimension, String)} if value is present, and otherwise returns {@code this}. */ + default F with(FetchVector.Dimension dimension, Optional<String> dimensionValue) { + return dimensionValue.map(value -> with(dimension, value)).orElse(self()); + } + /** Returns the value, boxed if the flag wraps a primitive type. */ T boxedValue(); } diff --git a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java index 00d6662e84a..406a342885a 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java @@ -13,6 +13,7 @@ import java.util.Optional; import java.util.TreeMap; import static com.yahoo.vespa.flags.FetchVector.Dimension.APPLICATION_ID; +import static com.yahoo.vespa.flags.FetchVector.Dimension.CLUSTER_ID; import static com.yahoo.vespa.flags.FetchVector.Dimension.CLUSTER_TYPE; import static com.yahoo.vespa.flags.FetchVector.Dimension.HOSTNAME; import static com.yahoo.vespa.flags.FetchVector.Dimension.NODE_TYPE; @@ -238,7 +239,7 @@ public class Flags { List.of("hmusum"), "2021-03-15", "2021-05-15", "JVM max heap size for config proxy in Mb", "Takes effect on restart of Docker container", - CLUSTER_TYPE); + CLUSTER_TYPE, CLUSTER_ID); public static final UnboundStringFlag DEDICATED_CLUSTER_CONTROLLER_FLAVOR = defineStringFlag( "dedicated-cluster-controller-flavor", "", List.of("jonmv"), "2021-02-25", "2021-04-25", diff --git a/flags/src/main/java/com/yahoo/vespa/flags/IntFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/IntFlag.java index 4a59c34e8d0..94a6e9b6e15 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/IntFlag.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/IntFlag.java @@ -12,6 +12,11 @@ public class IntFlag extends FlagImpl<Integer, IntFlag> { super(id, defaultValue, vector, serializer, source, IntFlag::new); } + @Override + public IntFlag self() { + return this; + } + public int value() { return boxedValue(); } diff --git a/flags/src/main/java/com/yahoo/vespa/flags/JacksonFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/JacksonFlag.java index e4afbd231a1..007110f077d 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/JacksonFlag.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/JacksonFlag.java @@ -12,6 +12,11 @@ public class JacksonFlag<T> extends FlagImpl<T, JacksonFlag<T>> { super(id, defaultValue, vector, serializer, source, JacksonFlag::new); } + @Override + public JacksonFlag<T> self() { + return this; + } + public T value() { return boxedValue(); } diff --git a/flags/src/main/java/com/yahoo/vespa/flags/ListFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/ListFlag.java index 6fefc5e22e3..4c7e9683833 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/ListFlag.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/ListFlag.java @@ -13,6 +13,11 @@ public class ListFlag<T> extends FlagImpl<List<T>, ListFlag<T>> { super(id, defaultValue, vector, serializer, source, ListFlag::new); } + @Override + public ListFlag<T> self() { + return this; + } + public List<T> value() { return boxedValue(); } diff --git a/flags/src/main/java/com/yahoo/vespa/flags/LongFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/LongFlag.java index 8a1707c9e6a..1242d05c290 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/LongFlag.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/LongFlag.java @@ -12,6 +12,11 @@ public class LongFlag extends FlagImpl<Long, LongFlag> { super(id, defaultValue, vector, serializer, source, LongFlag::new); } + @Override + public LongFlag self() { + return this; + } + public long value() { return boxedValue(); } diff --git a/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java b/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java index 7099124024b..251d8f67126 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java @@ -11,6 +11,8 @@ import java.time.format.DateTimeFormatter; import java.util.List; import static com.yahoo.vespa.flags.FetchVector.Dimension.APPLICATION_ID; +import static com.yahoo.vespa.flags.FetchVector.Dimension.CLUSTER_ID; +import static com.yahoo.vespa.flags.FetchVector.Dimension.CLUSTER_TYPE; import static com.yahoo.vespa.flags.FetchVector.Dimension.CONSOLE_USER_EMAIL; import static com.yahoo.vespa.flags.FetchVector.Dimension.HOSTNAME; import static com.yahoo.vespa.flags.FetchVector.Dimension.NODE_TYPE; @@ -102,9 +104,9 @@ public class PermanentFlags { public static final UnboundDoubleFlag CONTAINER_CPU_CAP = defineDoubleFlag( "container-cpu-cap", 0, "Hard limit on how many CPUs a container may use. This value is multiplied by CPU allocated to node, so " + - "to cap CPU at 200%, set this to 2, etc.", + "to cap CPU at 200%, set this to 2, etc. 0 disables the cap to allow unlimited CPU.", "Takes effect on next node agent tick. Change is orchestrated, but does NOT require container restart", - HOSTNAME, APPLICATION_ID); + HOSTNAME, APPLICATION_ID, CLUSTER_ID, CLUSTER_TYPE); public static final UnboundListFlag<String> DISABLED_HOST_ADMIN_TASKS = defineListFlag( "disabled-host-admin-tasks", List.of(), String.class, diff --git a/flags/src/main/java/com/yahoo/vespa/flags/StringFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/StringFlag.java index 925af130b95..33391f43d80 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/StringFlag.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/StringFlag.java @@ -12,6 +12,11 @@ public class StringFlag extends FlagImpl<String, StringFlag> { super(id, defaultValue, vector, serializer, source, StringFlag::new); } + @Override + public StringFlag self() { + return this; + } + public String value() { return boxedValue(); } diff --git a/flags/src/main/java/com/yahoo/vespa/flags/json/DimensionHelper.java b/flags/src/main/java/com/yahoo/vespa/flags/json/DimensionHelper.java index f109d3c950b..b18c0c43bbc 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/json/DimensionHelper.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/json/DimensionHelper.java @@ -17,6 +17,7 @@ public class DimensionHelper { serializedDimensions.put(FetchVector.Dimension.HOSTNAME, "hostname"); serializedDimensions.put(FetchVector.Dimension.APPLICATION_ID, "application"); serializedDimensions.put(FetchVector.Dimension.NODE_TYPE, "node-type"); + serializedDimensions.put(FetchVector.Dimension.CLUSTER_ID, "cluster-id"); serializedDimensions.put(FetchVector.Dimension.CLUSTER_TYPE, "cluster-type"); serializedDimensions.put(FetchVector.Dimension.VESPA_VERSION, "vespa-version"); serializedDimensions.put(FetchVector.Dimension.CONSOLE_USER_EMAIL, "console-user-email"); |