diff options
author | Håkon Hallingstad <hakon@yahooinc.com> | 2023-10-21 00:03:56 +0200 |
---|---|---|
committer | Håkon Hallingstad <hakon@yahooinc.com> | 2023-10-21 00:03:56 +0200 |
commit | 6f5a6e13e80fd0560acfd8e3a02350b133970289 (patch) | |
tree | b88e827eacf2e85a45fc28c07cda489cf54291fd /node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications | |
parent | 3329506f6941342c0557b1bd60d63dfef7cc7fe9 (diff) |
Support exclusive allocation on non-exclusive host
Diffstat (limited to 'node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Applications.java | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Applications.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Applications.java index 5b0180bad43..fdf4a7ae838 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Applications.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Applications.java @@ -63,19 +63,24 @@ public class Applications { db.deleteApplication(transaction); } + public record Lock(Mutex mutex, ApplicationId application) implements Mutex { + @Override + public void close() { mutex.close(); } + } + /** Create a lock which provides exclusive rights to making changes to the given application */ - public Mutex lock(ApplicationId application) { - return db.lock(application); + public Lock lock(ApplicationId application) { + return new Lock(db.lock(application), application); } /** Create a lock with a timeout which provides exclusive rights to making changes to the given application */ - public Mutex lock(ApplicationId application, Duration timeout) { - return db.lock(application, timeout); + public Lock lock(ApplicationId application, Duration timeout) { + return new Lock(db.lock(application, timeout), application); } /** Create a lock which provides exclusive rights to perform a maintenance deployment */ - public Mutex lockMaintenance(ApplicationId application) { - return db.lockMaintenance(application); + public Lock lockMaintenance(ApplicationId application) { + return new Lock(db.lockMaintenance(application), application); } } |