diff options
author | Håkon Hallingstad <hakon@verizonmedia.com> | 2020-02-23 20:12:01 +0100 |
---|---|---|
committer | Håkon Hallingstad <hakon@verizonmedia.com> | 2020-02-23 20:12:01 +0100 |
commit | 515c4ff32934e98fef121c7388f2f3703f09d897 (patch) | |
tree | 8bac966003dc123fc4964e6c35b5a4269a38deaa /node-repository | |
parent | 988131792a9bf0cd22072622ec3ffd2d62efa62d (diff) |
Fail cfg bootstrap if activation of infra apps fails
Diffstat (limited to 'node-repository')
3 files changed, 19 insertions, 5 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureProvisioner.java index 51612e27518..cc352cc567f 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureProvisioner.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureProvisioner.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.hosted.provision.maintenance; import com.yahoo.config.provision.InfraDeployer; +import com.yahoo.log.LogLevel; import com.yahoo.vespa.hosted.provision.NodeRepository; import java.time.Duration; @@ -22,10 +23,22 @@ public class InfrastructureProvisioner extends Maintainer { InfrastructureProvisioner(NodeRepository nodeRepository, InfraDeployer infraDeployer, Duration interval) { super(nodeRepository, interval); this.infraDeployer = infraDeployer; + + // If this fails, we fail the component graph construction and bootstrap of config server, + // which is what we want. + try { + infraDeployer.activateAllSupportedInfraApplications(true); + } catch (RuntimeException e) { + logger.log(LogLevel.INFO, "Failed to deploy supported infrastructure applications, " + + "will sleep 30s before propagating failure, to allow inspection of zk", + e.getMessage()); + try { Thread.sleep(30_000); } catch (InterruptedException ignored) { } + throw e; + } } @Override protected void maintain() { - infraDeployer.activateAllSupportedInfraApplications(); + infraDeployer.activateAllSupportedInfraApplications(false); } } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/InfraDeployerImpl.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/InfraDeployerImpl.java index be42d3aed80..1086a3a7cd9 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/InfraDeployerImpl.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/InfraDeployerImpl.java @@ -20,7 +20,6 @@ import com.yahoo.vespa.service.monitor.DuperModelInfraApi; import com.yahoo.vespa.service.monitor.InfraApplicationApi; import java.util.List; -import java.util.Map; import java.util.Optional; import java.util.logging.Logger; import java.util.stream.Collectors; @@ -51,7 +50,7 @@ public class InfraDeployerImpl implements InfraDeployer { } @Override - public void activateAllSupportedInfraApplications() { + public void activateAllSupportedInfraApplications(boolean propagateException) { duperModel.getSupportedInfraApplications().forEach(api -> { var application = api.getApplicationId(); var deployment = new InfraDeployment(api); @@ -59,6 +58,9 @@ public class InfraDeployerImpl implements InfraDeployer { deployment.activate(); } catch (RuntimeException e) { logger.log(LogLevel.INFO, "Failed to activate " + application, e); + if (propagateException) { + throw e; + } // loop around to activate the next application } }); diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockInfraDeployer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockInfraDeployer.java index 45fb2742bd4..742a863fb38 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockInfraDeployer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockInfraDeployer.java @@ -5,7 +5,6 @@ import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.Deployment; import com.yahoo.config.provision.InfraDeployer; -import java.util.Map; import java.util.Optional; public class MockInfraDeployer implements InfraDeployer { @@ -15,5 +14,5 @@ public class MockInfraDeployer implements InfraDeployer { } @Override - public void activateAllSupportedInfraApplications() { } + public void activateAllSupportedInfraApplications(boolean propagateException) { } } |