diff options
author | Valerij Fredriksen <freva@users.noreply.github.com> | 2023-03-02 11:05:09 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-02 11:05:09 +0100 |
commit | f3d2f7088759c302f86e74d4f69f609c599c6423 (patch) | |
tree | e079c24f8051ff13de353e02bd7133f4c2f8bcad /controller-server | |
parent | 79e834ed9fe6acad5e22bbee1fcc914026105fd6 (diff) | |
parent | a2a1d23864dc76b8b1d7441bb65670b4230cb63a (diff) |
Merge pull request #26268 from vespa-engine/jonmv/another-try-with-resources
Another try-with-res to preserve any original exception
Diffstat (limited to 'controller-server')
-rw-r--r-- | controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java | 11 |
1 files changed, 6 insertions, 5 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 f6ac4626196..d1545537d48 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 @@ -891,16 +891,17 @@ public class ApplicationController { */ private Optional<LockedApplication> deactivate(ApplicationId instanceId, ZoneId zone, Optional<LockedApplication> application) { DeploymentId id = new DeploymentId(instanceId, zone); - try { - configServer.deactivate(id); - } finally { + interface CleanCloseable extends AutoCloseable { void close(); } + try (CleanCloseable postDeactivation = () -> { application.ifPresent(app -> controller.routing().of(id).configure(app.get().deploymentSpec())); if (id.zoneId().environment().isManuallyDeployed()) applicationStore.putMetaTombstone(id, clock.instant()); - if (!id.zoneId().environment().isTest()) + if ( ! id.zoneId().environment().isTest()) controller.notificationsDb().removeNotifications(NotificationSource.from(id)); + }) { + configServer.deactivate(id); + return application.map(app -> app.with(instanceId.instance(), instance -> instance.withoutDeploymentIn(id.zoneId()))); } - return application.map(app -> app.with(instanceId.instance(), instance -> instance.withoutDeploymentIn(id.zoneId()))); } public DeploymentTrigger deploymentTrigger() { return deploymentTrigger; } |