summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java12
1 files changed, 5 insertions, 7 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 e3df6199d06..f729c30de20 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
@@ -29,7 +29,7 @@ import java.util.stream.Collectors;
public abstract class ApplicationMaintainer extends Maintainer {
private final Deployer deployer;
- private final List<ApplicationId> pendingDeployments = new CopyOnWriteArrayList<>();
+ private final CopyOnWriteArrayList<ApplicationId> pendingDeployments = new CopyOnWriteArrayList<>();
// 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
@@ -66,13 +66,11 @@ public abstract class ApplicationMaintainer extends Maintainer {
* even when deployments are slow.
*/
protected void deploy(ApplicationId application) {
- if (pendingDeployments.contains(application)) {
- return;// Avoid queuing multiple deployments for same application
+ if (pendingDeployments.addIfAbsent(application)) { // Avoid queuing multiple deployments for same application
+ log.log(LogLevel.INFO, application + " will be deployed, last deploy time " +
+ getLastDeployTime(application));
+ deploymentExecutor.execute(() -> deployWithLock(application));
}
- log.log(LogLevel.INFO, application + " will be deployed, last deploy time " +
- getLastDeployTime(application));
- pendingDeployments.add(application);
- deploymentExecutor.execute(() -> deployWithLock(application));
}
protected Deployer deployer() { return deployer; }