aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@verizonmedia.com>2020-02-23 20:12:01 +0100
committerHåkon Hallingstad <hakon@verizonmedia.com>2020-02-23 20:12:01 +0100
commit515c4ff32934e98fef121c7388f2f3703f09d897 (patch)
tree8bac966003dc123fc4964e6c35b5a4269a38deaa /node-repository
parent988131792a9bf0cd22072622ec3ffd2d62efa62d (diff)
Fail cfg bootstrap if activation of infra apps fails
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureProvisioner.java15
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/InfraDeployerImpl.java6
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockInfraDeployer.java3
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) { }
}