diff options
author | Håkon Hallingstad <hakon@verizonmedia.com> | 2020-03-05 14:29:43 +0100 |
---|---|---|
committer | Håkon Hallingstad <hakon@verizonmedia.com> | 2020-03-05 14:29:43 +0100 |
commit | 3061c42d9a874453998d42e5761cebcefba0deea (patch) | |
tree | efc3d39f7ebaa07cb525f33abd04e62e31055330 /node-repository | |
parent | 916e3950a7ec137bf213134a6a4ca1c365110dde (diff) |
Close lock on exception in MaintenanceDeployment
Diffstat (limited to 'node-repository')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java index d25ef969c6b..856de2609be 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java @@ -35,8 +35,16 @@ class MaintenanceDeployment implements Closeable { public MaintenanceDeployment(ApplicationId application, Deployer deployer, NodeRepository nodeRepository) { this.application = application; - lock = tryLock(application, nodeRepository); - deployment = tryDeployment(lock, application, deployer, nodeRepository); + Optional<Mutex> lock = tryLock(application, nodeRepository); + + try { + deployment = tryDeployment(lock, application, deployer, nodeRepository); + + this.lock = lock; + lock = Optional.empty(); + } finally { + lock.ifPresent(Mutex::close); + } } /** Return whether this is - as yet - functional and can be used to carry out the deployment */ |