diff options
author | Jon Bratseth <bratseth@verizonmedia.com> | 2019-11-29 12:40:35 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@verizonmedia.com> | 2019-11-29 12:41:22 +0200 |
commit | c4fb59a997863338c68b02576ea675c81be22033 (patch) | |
tree | 309e896e9b7200dd7a59653804da73ff39635c17 /node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java | |
parent | 90b00a081d1da71f944325ece7aefa443fb5f1a8 (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.java | 22 |
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(); |