aboutsummaryrefslogtreecommitdiffstats
path: root/policy-core/src/main/java/org/onap/policy/drools/core/lock/SimpleLockManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'policy-core/src/main/java/org/onap/policy/drools/core/lock/SimpleLockManager.java')
-rw-r--r--policy-core/src/main/java/org/onap/policy/drools/core/lock/SimpleLockManager.java16
1 files changed, 6 insertions, 10 deletions
diff --git a/policy-core/src/main/java/org/onap/policy/drools/core/lock/SimpleLockManager.java b/policy-core/src/main/java/org/onap/policy/drools/core/lock/SimpleLockManager.java
index 081ad4c1..243ba3cb 100644
--- a/policy-core/src/main/java/org/onap/policy/drools/core/lock/SimpleLockManager.java
+++ b/policy-core/src/main/java/org/onap/policy/drools/core/lock/SimpleLockManager.java
@@ -74,7 +74,9 @@ public class SimpleLockManager {
}
/**
- * Attempts to lock a resource, extending the lock if the owner already holds it.
+ * Attempts to lock a resource, rejecting the lock if it is already owned, even if
+ * it's the same owner; the same owner can use {@link #refresh(String, String, int)
+ * refresh()}, instead, to extend a lock on a resource.
*
* @param resourceId
* @param owner
@@ -93,25 +95,19 @@ public class SimpleLockManager {
throw makeNullArgException(MSG_NULL_OWNER);
}
- Data existingLock;
+ boolean locked = false;
synchronized(locker) {
cleanUpLocks();
- if ((existingLock = resource2data.get(resourceId)) != null && existingLock.getOwner().equals(owner)) {
- // replace the existing lock with an extended lock
- locks.remove(existingLock);
- existingLock = null;
- }
-
- if (existingLock == null) {
+ if(!resource2data.containsKey(resourceId)) {
Data data = new Data(owner, resourceId, currentTime.getMillis() + TimeUnit.SECONDS.toMillis(holdSec));
resource2data.put(resourceId, data);
locks.add(data);
+ locked = true;
}
}
- boolean locked = (existingLock == null);
logger.info("lock {} for resource {} owner {}", locked, resourceId, owner);
return locked;