diff options
Diffstat (limited to 'node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java index 42dfb38e4d3..b9dff572d5b 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java @@ -10,7 +10,6 @@ import com.yahoo.vespa.hosted.provision.Node; import com.yahoo.vespa.hosted.provision.NodeRepository; import java.time.Duration; -import java.time.Instant; import java.util.LinkedHashSet; import java.util.List; import java.util.Optional; @@ -28,7 +27,10 @@ public abstract class ApplicationMaintainer extends Maintainer { private final Deployer deployer; - private final Executor deploymentExecutor = Executors.newCachedThreadPool(new DaemonThreadFactory("node repo application maintainer")); + // Use a fixed thread pool to avoid overload on config servers. Resource usage when deploying varies + // a lot between applications, so doing one by one avoids issues where one or more resource-demanding + // deployments happen simultaneously + private final Executor deploymentExecutor = Executors.newSingleThreadExecutor(new DaemonThreadFactory("node repo application maintainer")); protected ApplicationMaintainer(Deployer deployer, NodeRepository nodeRepository, Duration interval, JobControl jobControl) { super(nodeRepository, interval, jobControl); @@ -41,7 +43,6 @@ public abstract class ApplicationMaintainer extends Maintainer { for (ApplicationId application : applications) { if (canDeployNow(application)) deploy(application); - throttle(applications.size()); } } @@ -61,10 +62,8 @@ public abstract class ApplicationMaintainer extends Maintainer { protected Deployer deployer() { return deployer; } - /** Block in this method until the next application should be maintained */ - protected abstract void throttle(int applicationCount); - private Set<ApplicationId> applicationsNeedingMaintenance() { + protected Set<ApplicationId> applicationsNeedingMaintenance() { return nodesNeedingMaintenance().stream() .map(node -> node.allocation().get().owner()) .collect(Collectors.toCollection(LinkedHashSet::new)); |