1. Adds a lockAsync method to LockService for async lock acquisition.
2. Fixes a bug where lock() wasn't attempting a tryLock before registering for lock avalilability.
(Note 1 above is needed for LeadershipService which will come later)
Change-Id: I1deaa445f7cdf86416b335df1d7358e17eff19c3
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DistributedLockManager.java b/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DistributedLockManager.java
index 3ec7876..74f8373 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DistributedLockManager.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DistributedLockManager.java
@@ -111,17 +111,17 @@
* @param lock lock to acquire.
* @param waitTimeMillis maximum time to wait before giving up.
* @param leaseDurationMillis the duration for which to acquire the lock initially.
- * @return Future lease expiration date.
+ * @return Future that can be blocked on until lock becomes available.
*/
- protected CompletableFuture<DateTime> lockIfAvailable(
+ protected CompletableFuture<Void> lockIfAvailable(
Lock lock,
- long waitTimeMillis,
+ int waitTimeMillis,
int leaseDurationMillis) {
- CompletableFuture<DateTime> future = new CompletableFuture<>();
+ CompletableFuture<Void> future = new CompletableFuture<>();
LockRequest request = new LockRequest(
lock,
leaseDurationMillis,
- DateTime.now().plusMillis(leaseDurationMillis),
+ DateTime.now().plusMillis(waitTimeMillis),
future);
locksToAcquire.put(lock.path(), request);
return future;
@@ -133,10 +133,10 @@
* @param leaseDurationMillis the duration for which to acquire the lock initially.
* @return Future lease expiration date.
*/
- protected CompletableFuture<DateTime> lockIfAvailable(
+ protected CompletableFuture<Void> lockIfAvailable(
Lock lock,
int leaseDurationMillis) {
- CompletableFuture<DateTime> future = new CompletableFuture<>();
+ CompletableFuture<Void> future = new CompletableFuture<>();
LockRequest request = new LockRequest(
lock,
leaseDurationMillis,
@@ -189,7 +189,7 @@
existingRequestIterator.remove();
} else {
if (request.lock().tryLock(request.leaseDurationMillis())) {
- request.future().complete(DateTime.now().plusMillis(request.leaseDurationMillis()));
+ request.future().complete(null);
existingRequestIterator.remove();
}
}
@@ -203,13 +203,13 @@
private final Lock lock;
private final DateTime requestExpirationTime;
private final int leaseDurationMillis;
- private final CompletableFuture<DateTime> future;
+ private final CompletableFuture<Void> future;
public LockRequest(
Lock lock,
int leaseDurationMillis,
DateTime requestExpirationTime,
- CompletableFuture<DateTime> future) {
+ CompletableFuture<Void> future) {
this.lock = lock;
this.requestExpirationTime = requestExpirationTime;
@@ -229,7 +229,7 @@
return leaseDurationMillis;
}
- public CompletableFuture<DateTime> future() {
+ public CompletableFuture<Void> future() {
return future;
}
}