diff options
author | Valerij Fredriksen <valerij92@gmail.com> | 2019-01-11 20:44:41 +0100 |
---|---|---|
committer | Valerij Fredriksen <valerij92@gmail.com> | 2019-01-11 21:20:12 +0100 |
commit | 3fb8c960a2121922cd1a4c36de9597e7440d71fd (patch) | |
tree | e4b83300fde3860c07a82b96cf860da16d60228b | |
parent | 6d8f6b08da2addc3691d32809dfa4e880636a7d0 (diff) |
Code review fixes
6 files changed, 26 insertions, 17 deletions
diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerResources.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerResources.java index 1a643eafacf..58347a1e8fd 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerResources.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerResources.java @@ -8,6 +8,7 @@ import java.util.Objects; */ public class ContainerResources { public static final ContainerResources UNLIMITED = ContainerResources.from(0, 0, 0); + private static final int CPU_PERIOD = 100_000; // 100 µs private final double cpus; private final int cpuShares; @@ -37,6 +38,14 @@ public class ContainerResources { return cpus; } + public int cpuQuota() { + return (int) cpus * CPU_PERIOD; + } + + public int cpuPeriod() { + return CPU_PERIOD; + } + public int cpuShares() { return cpuShares; } @@ -50,7 +59,7 @@ public class ContainerResources { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; ContainerResources that = (ContainerResources) o; - return Double.compare(that.cpus, cpus) == 0 && + return Math.abs(that.cpus - cpus) < 0.0001 && cpuShares == that.cpuShares && memoryBytes == that.memoryBytes; } diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java index 36b71b66158..febd3ba4d98 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java @@ -26,7 +26,6 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.Stream; -import static com.yahoo.vespa.hosted.dockerapi.DockerImpl.CPU_PERIOD; import static com.yahoo.vespa.hosted.dockerapi.DockerImpl.LABEL_NAME_MANAGEDBY; class CreateContainerCommandImpl implements Docker.CreateContainerCommand { @@ -163,8 +162,8 @@ class CreateContainerCommandImpl implements Docker.CreateContainerCommand { containerResources.ifPresent(cr -> hostConfig .withCpuShares(cr.cpuShares()) .withMemory(cr.memoryBytes()) - .withCpuPeriod(cr.cpus() > 0 ? CPU_PERIOD : null) - .withCpuQuota(cr.cpus() > 0 ? (int) (CPU_PERIOD * cr.cpus()) : null)); + .withCpuPeriod(cr.cpuQuota() > 0 ? cr.cpuPeriod() : null) + .withCpuQuota(cr.cpuQuota() > 0 ? cr.cpuQuota() : null)); final CreateContainerCmd containerCmd = docker .createContainerCmd(dockerImage.asString()) diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java index 52824f6050c..5405e283b47 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java @@ -48,7 +48,6 @@ public class DockerImpl implements Docker { private static final Logger logger = Logger.getLogger(DockerImpl.class.getName()); static final String LABEL_NAME_MANAGEDBY = "com.yahoo.vespa.managedby"; - static final int CPU_PERIOD = 100_000; // 100 µs private static final String FRAMEWORK_CONTAINER_PREFIX = "/"; private static final Duration WAIT_BEFORE_KILLING = Duration.ofSeconds(10); @@ -246,8 +245,8 @@ public class DockerImpl implements Docker { // See: https://docs.docker.com/config/containers/resource_constraints/#configure-the-default-cfs-scheduler // --cpus requires API 1.25+ on create and 1.29+ on update // NanoCPUs is supported in docker-java as of 3.1.0 on create and not at all on update - .withCpuPeriod(resources.cpus() > 0 ? CPU_PERIOD : null) - .withCpuQuota(resources.cpus() > 0 ? (int) (CPU_PERIOD * resources.cpus()) : null); + .withCpuPeriod(resources.cpuQuota() > 0 ? resources.cpuPeriod() : null) + .withCpuQuota(resources.cpuQuota() > 0 ? resources.cpuQuota() : null); updateContainerCmd.exec(); } catch (NotFoundException e) { 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 f2d96de79dc..cc4d55c0c94 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java @@ -8,6 +8,7 @@ import java.util.List; 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.HOSTNAME; /** @@ -41,7 +42,7 @@ public class Flags { "use-config-server-cache", true, "Whether config server will use cache to answer config requests.", "Takes effect immediately when changed.", - HOSTNAME, FetchVector.Dimension.APPLICATION_ID); + HOSTNAME, APPLICATION_ID); public static final UnboundBooleanFlag CONFIG_SERVER_BOOTSTRAP_IN_SEPARATE_THREAD = defineFeatureFlag( "config-server-bootstrap-in-separate-thread", true, diff --git a/flags/src/main/java/com/yahoo/vespa/flags/InMemoryFlagSource.java b/flags/src/main/java/com/yahoo/vespa/flags/InMemoryFlagSource.java index 25b871f8cd1..5e2afe39dd8 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/InMemoryFlagSource.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/InMemoryFlagSource.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 com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.DoubleNode; import com.yahoo.vespa.flags.json.FlagData; import com.yahoo.vespa.flags.json.Rule; @@ -21,8 +23,13 @@ public class InMemoryFlagSource implements FlagSource { return this; } - public InMemoryFlagSource withFlag(FlagId flagId, FetchVector defaultFetchVector, Rule... rules) { - flagDataById.put(flagId, new FlagData(flagId, defaultFetchVector, rules)); + public InMemoryFlagSource withDoubleFlag(FlagId flagId, double value) { + return withRawFlag(flagId, new DoubleNode(value)); + } + + private InMemoryFlagSource withRawFlag(FlagId flagId, JsonNode rawFlag) { + Rule rule = new Rule(Optional.of(JsonNodeRawFlag.fromJsonNode(rawFlag))); + flagDataById.put(flagId, new FlagData(flagId, new FetchVector(), rule)); return this; } diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java index 78fa53edb56..1b116b304b2 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java @@ -4,11 +4,8 @@ package com.yahoo.vespa.hosted.node.admin.nodeagent; import com.fasterxml.jackson.databind.ObjectMapper; import com.yahoo.config.provision.NodeType; import com.yahoo.metrics.simple.MetricReceiver; -import com.yahoo.vespa.flags.FetchVector; import com.yahoo.vespa.flags.Flags; import com.yahoo.vespa.flags.InMemoryFlagSource; -import com.yahoo.vespa.flags.JsonNodeRawFlag; -import com.yahoo.vespa.flags.json.Rule; import com.yahoo.vespa.hosted.dockerapi.Container; import com.yahoo.vespa.hosted.dockerapi.ContainerName; import com.yahoo.vespa.hosted.dockerapi.ContainerResources; @@ -279,10 +276,7 @@ public class NodeAgentImplTest { inOrder.verify(orchestrator).resume(any(String.class)); // Set the feature flag - flagSource.withFlag( - Flags.CONTAINER_CPU_CAP.id(), - new FetchVector(), - new Rule(Optional.of(JsonNodeRawFlag.fromJson("2.3")))); + flagSource.withDoubleFlag(Flags.CONTAINER_CPU_CAP.id(), 2.3); nodeAgent.converge(thirdContext); inOrder.verify(dockerOperations).updateContainer(eq(thirdContext), eq(ContainerResources.from(2.3, 4, 16))); |