diff options
author | Martin Polden <mpolden@mpolden.no> | 2019-01-03 13:55:40 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-03 13:55:40 +0100 |
commit | c98795666cae43db8db242559b2fdd47c2a630ef (patch) | |
tree | 595ba99ef54f4892e8546ed36356ef65207030d5 /controller-server | |
parent | 0c9c6638452df2d3de0e32b3837e8bbd82740edd (diff) | |
parent | ffb7f8a1297c4eb74ad4104217a48a245c0b4361 (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')
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(), |