diff options
author | Martin Polden <mpolden@mpolden.no> | 2018-08-10 16:19:49 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2018-08-10 16:19:49 +0200 |
commit | 2d2d3ab3c093098882f2509a12aa6604dd8422ab (patch) | |
tree | ae20fcf348f8e86b2f5d11c26d9d5fb235c0e18a /node-repository | |
parent | 5694de3199a631126f6155f8cdc26cb26822a381 (diff) |
Use addIfAbsent to ensure update/remove order
Diffstat (limited to 'node-repository')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java | 12 |
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; } |