aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@yahooinc.com>2023-10-21 00:03:56 +0200
committerHåkon Hallingstad <hakon@yahooinc.com>2023-10-21 00:03:56 +0200
commit6f5a6e13e80fd0560acfd8e3a02350b133970289 (patch)
treeb88e827eacf2e85a45fc28c07cda489cf54291fd /node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications
parent3329506f6941342c0557b1bd60d63dfef7cc7fe9 (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.java17
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);
}
}