summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-01-03 13:55:40 +0100
committerGitHub <noreply@github.com>2019-01-03 13:55:40 +0100
commitc98795666cae43db8db242559b2fdd47c2a630ef (patch)
tree595ba99ef54f4892e8546ed36356ef65207030d5 /controller-server
parent0c9c6638452df2d3de0e32b3837e8bbd82740edd (diff)
parentffb7f8a1297c4eb74ad4104217a48a245c0b4361 (diff)
Merge pull request #7995 from vespa-engine/jvenstad/throw-first-artifact-exception
Rethrow first exception, which is more likely relevant
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java16
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java4
2 files changed, 13 insertions, 7 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java
index 5319543bca3..8def309a2f0 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java
@@ -384,11 +384,17 @@ public class ApplicationController {
: new ApplicationPackage(artifactRepository.getApplicationPackage(application.id(), version.id()));
}
catch (RuntimeException e) { // If application has switched deployment pipeline, artifacts stored prior to the switch are in the other artifact store.
- log.info("Fetching application package for " + application.id() + " from alternate repository; it is now deployed "
- + (application.deploymentJobs().deployedInternally() ? "internally" : "externally") + "\nException was: " + Exceptions.toMessageString(e));
- return application.deploymentJobs().deployedInternally()
- ? new ApplicationPackage(artifactRepository.getApplicationPackage(application.id(), version.id()))
- : new ApplicationPackage(applicationStore.get(application.id(), version));
+ try {
+ log.info("Fetching application package for " + application.id() + " from alternate repository; it is now deployed "
+ + (application.deploymentJobs().deployedInternally() ? "internally" : "externally") + "\nException was: " + Exceptions.toMessageString(e));
+ return application.deploymentJobs().deployedInternally()
+ ? new ApplicationPackage(artifactRepository.getApplicationPackage(application.id(), version.id()))
+ : new ApplicationPackage(applicationStore.get(application.id(), version));
+ }
+ catch (RuntimeException s) { // If this fails, too, the first failure is most likely the relevant one.
+ e.addSuppressed(s);
+ throw e;
+ }
}
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java
index a9b5baacb51..22ef61839be 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java
@@ -269,8 +269,8 @@ public class ApplicationApiTest extends ControllerContainerTest {
tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/environment/prod/region/us-central-1/instance/default/", POST)
.data(entity)
.userIdentity(HOSTED_VESPA_OPERATOR),
- "{\"error-code\":\"INTERNAL_SERVER_ERROR\",\"message\":\"NullPointerException\"}",
- 500);
+ "{\"error-code\":\"BAD_REQUEST\",\"message\":\"No application package found for tenant1.application1 with version 1.0.41-commit1\"}",
+ 400);
// POST an application deployment to a production zone - operator emergency deployment - works with known package
entity = createApplicationDeployData(Optional.empty(),