This is an automated email from the ASF dual-hosted git repository.
szetszwo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new b26620ded2 HDDS-10899. Refactor Lease callbacks (#6715)
b26620ded2 is described below
commit b26620ded24057f369d704a09ca1cf8d415e8dc8
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Wed May 22 17:57:07 2024 +0200
HDDS-10899. Refactor Lease callbacks (#6715)
---
.../java/org/apache/hadoop/ozone/lease/Lease.java | 26 +++++++++-------------
.../hadoop/ozone/lease/LeaseCallbackExecutor.java | 14 +++++-------
.../apache/hadoop/ozone/lease/LeaseManager.java | 5 ++---
3 files changed, 19 insertions(+), 26 deletions(-)
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/lease/Lease.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/lease/Lease.java
index ccf33019ae..727d792253 100644
--- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/lease/Lease.java
+++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/lease/Lease.java
@@ -19,9 +19,6 @@ package org.apache.hadoop.ozone.lease;
import org.apache.hadoop.util.Time;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
import java.util.Objects;
import java.util.concurrent.Callable;
import java.util.concurrent.atomic.AtomicLong;
@@ -49,9 +46,9 @@ public class Lease<T> {
private boolean expired;
/**
- * Functions to be called in case of timeout.
+ * Function to be called in case of timeout.
*/
- private List<Callable<Void>> callbacks;
+ private Callable<Void> callback;
/**
@@ -63,11 +60,7 @@ public class Lease<T> {
* Lease lifetime in milliseconds
*/
public Lease(T resource, long timeout) {
- this.resource = resource;
- this.leaseTimeout = new AtomicLong(timeout);
- this.callbacks = Collections.synchronizedList(new ArrayList<>());
- this.creationTime = Time.monotonicNow();
- this.expired = false;
+ this(resource, timeout, null);
}
/**
@@ -81,8 +74,11 @@ public class Lease<T> {
* Callback registered to be triggered when lease expire
*/
public Lease(T resource, long timeout, Callable<Void> callback) {
- this(resource, timeout);
- callbacks.add(callback);
+ this.resource = resource;
+ this.leaseTimeout = new AtomicLong(timeout);
+ this.callback = callback;
+ this.creationTime = Time.monotonicNow();
+ this.expired = false;
}
/**
@@ -176,15 +172,15 @@ public class Lease<T> {
*
* @return callbacks to be executed
*/
- List<Callable<Void>> getCallbacks() {
- return callbacks;
+ Callable<Void> getCallback() {
+ return callback;
}
/**
* Expires/Invalidates the lease.
*/
void invalidate() {
- callbacks = null;
+ callback = null;
expired = true;
}
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/lease/LeaseCallbackExecutor.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/lease/LeaseCallbackExecutor.java
index 3f2d5fbe97..80ca937c00 100644
---
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/lease/LeaseCallbackExecutor.java
+++
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/lease/LeaseCallbackExecutor.java
@@ -20,7 +20,6 @@ package org.apache.hadoop.ozone.lease;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.List;
import java.util.concurrent.Callable;
/**
@@ -33,19 +32,19 @@ public class LeaseCallbackExecutor<T> implements Runnable {
LoggerFactory.getLogger(LeaseCallbackExecutor.class);
private final T resource;
- private final List<Callable<Void>> callbacks;
+ private final Callable<Void> callback;
/**
* Constructs LeaseCallbackExecutor instance with list of callbacks.
*
* @param resource
* The resource for which the callbacks are executed
- * @param callbacks
- * Callbacks to be executed by this executor
+ * @param callback
+ * Callback to be executed by this executor
*/
- public LeaseCallbackExecutor(T resource, List<Callable<Void>> callbacks) {
+ public LeaseCallbackExecutor(T resource, Callable<Void> callback) {
this.resource = resource;
- this.callbacks = callbacks;
+ this.callback = callback;
}
@Override
@@ -53,7 +52,7 @@ public class LeaseCallbackExecutor<T> implements Runnable {
if (LOG.isDebugEnabled()) {
LOG.debug("Executing callbacks for lease on {}", resource);
}
- for (Callable<Void> callback : callbacks) {
+ if (callback != null) {
try {
callback.call();
} catch (Exception e) {
@@ -62,5 +61,4 @@ public class LeaseCallbackExecutor<T> implements Runnable {
}
}
}
-
}
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/lease/LeaseManager.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/lease/LeaseManager.java
index 7dfcf3eb8c..bb4ccc1ac1 100644
---
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/lease/LeaseManager.java
+++
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/lease/LeaseManager.java
@@ -17,7 +17,6 @@
package org.apache.hadoop.ozone.lease;
-import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;
@@ -268,10 +267,10 @@ public class LeaseManager<T> {
long remainingTime = lease.getRemainingTime();
if (remainingTime <= 0) {
//Lease has timed out
- List<Callable<Void>> leaseCallbacks = lease.getCallbacks();
+ Callable<Void> leaseCallback = lease.getCallback();
release(resource);
executorService.execute(
- new LeaseCallbackExecutor<>(resource, leaseCallbacks));
+ new LeaseCallbackExecutor<>(resource, leaseCallback));
} else {
sleepTime = Math.min(remainingTime, sleepTime);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]