diff options
author | jonmv <venstad@gmail.com> | 2023-03-02 10:30:10 +0100 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2023-03-02 10:30:10 +0100 |
commit | a2a1d23864dc76b8b1d7441bb65670b4230cb63a (patch) | |
tree | 82dac0a76a276afefdc6896f77cce8375e73a765 /controller-server | |
parent | 31db1c671fac8e34f098f9d6d9797c2c1e05d433 (diff) |
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 a4bded314d9..37b764c9d41 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 @@ -892,16 +892,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; } |