aboutsummaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2021-03-19 14:15:31 +0100
committerHarald Musum <musum@verizonmedia.com>2021-03-19 14:15:31 +0100
commite53c65a6024f90ab1075aaf6c40cd6c14ca9f25c (patch)
tree944ab5e0d5db0a7ed0082a8accbff164a1bf5692 /node-admin
parent028c4e6a1414a4180b198ae9b2bbfeb8f877f69f (diff)
No need for warmup for admin and content nodes
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeMembership.java11
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java19
2 files changed, 19 insertions, 11 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeMembership.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeMembership.java
index 93541b03537..3b608b203e9 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeMembership.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeMembership.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.noderepository;
import java.util.Objects;
@@ -33,9 +33,7 @@ public class NodeMembership {
return group;
}
- public int index() {
- return index;
- }
+ public int index() { return index; }
public boolean isRetired() {
return retired;
@@ -85,8 +83,9 @@ public class NodeMembership {
}
public boolean isAdmin() { return "admin".equals(type); }
- public boolean isContent() { return "content".equals(type) || "combined".equals(type); }
- public boolean isContainer() { return "container".equals(type) || "combined".equals(type); }
+ public boolean isContent() { return "content".equals(type) || isCombined(); }
+ public boolean isCombined() { return "combined".equals(type); }
+ public boolean isContainer() { return "container".equals(type) || isCombined(); }
public String value() {
return type;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
index 8f9e3a46613..2d9b61b6ceb 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
@@ -15,6 +15,7 @@ import com.yahoo.vespa.hosted.dockerapi.RegistryCredentials;
import com.yahoo.vespa.hosted.dockerapi.exception.ContainerNotFoundException;
import com.yahoo.vespa.hosted.dockerapi.exception.DockerException;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttributes;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeMembership;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeRepository;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeState;
@@ -217,7 +218,7 @@ public class NodeAgentImpl implements NodeAgent {
private Container startContainer(NodeAgentContext context) {
ContainerData containerData = createContainerData(context);
- ContainerResources wantedResources = context.nodeType() != NodeType.tenant || warmUpDuration(context.zone()).isNegative() ?
+ ContainerResources wantedResources = warmUpDuration(context).isNegative() ?
getContainerResources(context) : getContainerResources(context).withUnlimitedCpus();
containerOperations.createContainer(context, containerData, wantedResources);
containerOperations.startContainer(context);
@@ -363,7 +364,7 @@ public class NodeAgentImpl implements NodeAgent {
ContainerResources wantedContainerResources = getContainerResources(context);
if (healthChecker.isPresent() && firstSuccessfulHealthCheckInstant
- .map(clock.instant().minus(warmUpDuration(context.zone()))::isBefore)
+ .map(clock.instant().minus(warmUpDuration(context))::isBefore)
.orElse(true))
return existingContainer;
@@ -478,7 +479,7 @@ public class NodeAgentImpl implements NodeAgent {
if (firstSuccessfulHealthCheckInstant.isEmpty())
firstSuccessfulHealthCheckInstant = Optional.of(clock.instant());
- Duration timeLeft = Duration.between(clock.instant(), firstSuccessfulHealthCheckInstant.get().plus(warmUpDuration(context.zone())));
+ Duration timeLeft = Duration.between(clock.instant(), firstSuccessfulHealthCheckInstant.get().plus(warmUpDuration(context)));
if (!container.get().resources.equalsCpu(getContainerResources(context)))
throw new ConvergenceException("Refusing to resume until warm up period ends (" +
(timeLeft.isNegative() ? "next tick" : "in " + timeLeft) + ")");
@@ -611,9 +612,17 @@ public class NodeAgentImpl implements NodeAgent {
return credentialsMaintainers;
}
- private Duration warmUpDuration(ZoneApi zone) {
- return zone.getSystemName().isCd() || zone.getEnvironment().isTest()
+ private Duration warmUpDuration(NodeAgentContext context) {
+ ZoneApi zone = context.zone();
+ Optional<NodeMembership> membership = context.node().membership();
+ return zone.getSystemName().isCd()
+ || zone.getEnvironment().isTest()
+ || (context.nodeType() != NodeType.tenant)
+ || membership.map(mem -> ! (mem.type().isContainer() ||
+ mem.type().isCombined()))
+ .orElse(false)
? Duration.ofSeconds(-1)
: warmUpDuration;
}
+
}