aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2019-11-29 12:40:35 +0200
committerJon Bratseth <bratseth@verizonmedia.com>2019-11-29 12:41:22 +0200
commitc4fb59a997863338c68b02576ea675c81be22033 (patch)
tree309e896e9b7200dd7a59653804da73ff39635c17 /node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java
parent90b00a081d1da71f944325ece7aefa443fb5f1a8 (diff)
Use MaintenanceDeployment
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.java22
1 files changed, 3 insertions, 19 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 c1a05a3c32d..8190da0f837 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
@@ -79,21 +79,10 @@ public abstract class ApplicationMaintainer extends Maintainer {
/** Redeploy this application. A lock will be taken for the duration of the deployment activation */
protected final void deployWithLock(ApplicationId application) {
- // An application might change its state between the time the set of applications is retrieved and the
- // time deployment happens. Lock the application and check if it's still active.
- //
- // Lock is acquired with a low timeout to reduce the chance of colliding with an external deployment.
- try (Mutex lock = nodeRepository().lock(application, Duration.ofSeconds(1))) {
- if ( ! isActive(application)) return; // became inactive since deployment was requested
+ try (MaintenanceDeployment deployment = new MaintenanceDeployment(application, deployer, nodeRepository())) {
+ if ( ! deployment.isValid()) return; // this will be done at another config server
if ( ! canDeployNow(application)) return; // redeployment is no longer needed
- Optional<Deployment> deployment = deployer.deployFromLocalActive(application);
- if ( ! deployment.isPresent()) return; // this will be done at another config server
- log.log(LogLevel.DEBUG, this.getClass().getSimpleName() + " deploying " + application);
- deployment.get().activate();
- } catch (TransientException e) {
- log.log(LogLevel.INFO, "Failed to redeploy " + application + " with a transient error: " + Exceptions.toMessageString(e));
- } catch (RuntimeException e) {
- log.log(LogLevel.WARNING, "Exception on maintenance redeploy", e);
+ deployment.activate();
} finally {
pendingDeployments.remove(application);
}
@@ -104,11 +93,6 @@ public abstract class ApplicationMaintainer extends Maintainer {
return deployer.lastDeployTime(application).orElse(Instant.EPOCH);
}
- /** Returns true when application has at least one active node */
- private boolean isActive(ApplicationId application) {
- return ! nodeRepository().getNodes(application, Node.State.active).isEmpty();
- }
-
@Override
public void deconstruct() {
super.deconstruct();