diff options
author | Martin Polden <mpolden@mpolden.no> | 2022-12-13 12:21:13 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2022-12-13 12:23:12 +0100 |
commit | e180756aafd18f250d8afde40711b3afd6d766b4 (patch) | |
tree | 3bac9be2d3bd89c6f54684c1116c8a5aa1fc8ad8 | |
parent | bb4a0af717de597b7cce4907276ea4c8069a7da8 (diff) |
Do not retry forever on LinkageError
-rw-r--r-- | controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java | 43 |
1 files changed, 19 insertions, 24 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java index efe072c2a6d..c500189dc4d 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java @@ -33,7 +33,6 @@ import com.yahoo.vespa.hosted.controller.api.integration.organization.Mail; import com.yahoo.vespa.hosted.controller.application.Deployment; import com.yahoo.vespa.hosted.controller.application.Endpoint; import com.yahoo.vespa.hosted.controller.application.TenantAndApplicationId; -import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage; import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackageStream; import com.yahoo.vespa.hosted.controller.application.pkg.TestPackage; import com.yahoo.vespa.hosted.controller.maintenance.JobRunner; @@ -44,7 +43,6 @@ import com.yahoo.vespa.hosted.controller.routing.context.DeploymentRoutingContex import com.yahoo.yolean.Exceptions; import java.io.ByteArrayOutputStream; -import java.io.InputStream; import java.io.PrintStream; import java.io.UncheckedIOException; import java.security.cert.CertificateExpiredException; @@ -127,31 +125,28 @@ public class InternalStepRunner implements StepRunner { public Optional<RunStatus> run(LockedStep step, RunId id) { DualLogger logger = new DualLogger(id, step.get()); try { - switch (step.get()) { - case deployTester: return deployTester(id, logger); - case deployInitialReal: return deployInitialReal(id, logger); - case installInitialReal: return installInitialReal(id, logger); - case deployReal: return deployReal(id, logger); - case installTester: return installTester(id, logger); - case installReal: return installReal(id, logger); - case startStagingSetup: return startTests(id, true, logger); - case endStagingSetup: return endTests(id, true, logger); - case endTests: return endTests(id, false, logger); - case startTests: return startTests(id, false, logger); - case copyVespaLogs: return copyVespaLogs(id, logger); - case deactivateReal: return deactivateReal(id, logger); - case deactivateTester: return deactivateTester(id, logger); - case report: return report(id, logger); - default: throw new AssertionError("Unknown step '" + step + "'!"); - } - } - catch (UncheckedIOException e) { + return switch (step.get()) { + case deployTester -> deployTester(id, logger); + case deployInitialReal -> deployInitialReal(id, logger); + case installInitialReal -> installInitialReal(id, logger); + case deployReal -> deployReal(id, logger); + case installTester -> installTester(id, logger); + case installReal -> installReal(id, logger); + case startStagingSetup -> startTests(id, true, logger); + case endStagingSetup -> endTests(id, true, logger); + case endTests -> endTests(id, false, logger); + case startTests -> startTests(id, false, logger); + case copyVespaLogs -> copyVespaLogs(id, logger); + case deactivateReal -> deactivateReal(id, logger); + case deactivateTester -> deactivateTester(id, logger); + case report -> report(id, logger); + }; + } catch (UncheckedIOException e) { logger.logWithInternalException(INFO, "IO exception running " + id + ": " + Exceptions.toMessageString(e), e); return Optional.empty(); - } - catch (RuntimeException e) { + } catch (RuntimeException|LinkageError e) { logger.log(WARNING, "Unexpected exception running " + id, e); - if (step.get().alwaysRun()) { + if (step.get().alwaysRun() && !(e instanceof LinkageError)) { logger.log("Will keep trying, as this is a cleanup step."); return Optional.empty(); } |