summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2018-07-05 10:36:49 -0400
committerJim Hahn <jrh3@att.com>2018-07-05 10:36:49 -0400
commit48dcb76d2895029d72298b0f81eb0cff71a4ea69 (patch)
treed427a5e6a11da3e509dc145d078428ec7d601f90
parentcecd4ac43f199ad9f020d38fb7d1651b296d1703 (diff)
unlock should always return TargetLock
ControlLoopEventManager.unlock only returns the TargetLock if the PolicyGuard.unlock operation is successful. However, if the lock has already expired, then PolicyGuard.unlock will return false, and ControlLoopEventManager.unlock will then return null. As a result, the rules do not retract the TargetLock. (The rules do, however, retract any left-over TargetLock objects during the clean-up phase. Nevertheless, the earlier rules should not have to depend on the clean-up rules to do that.) Modified the code to address this issue. Change-Id: I2e6099a4e3511053d2e6e1373cae4b480798d1b6 Issue-ID: POLICY-872 Signed-off-by: Jim Hahn <jrh3@att.com>
-rw-r--r--controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java14
-rw-r--r--controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java2
2 files changed, 9 insertions, 7 deletions
diff --git a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java
index 5f36bcc20..4817bec40 100644
--- a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java
+++ b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java
@@ -486,12 +486,14 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
if (this.targetLock == null) {
return null;
}
- if (PolicyGuard.unlockTarget(this.targetLock)) {
- TargetLock returnLock = this.targetLock;
- this.targetLock = null;
- return returnLock;
- }
- return null;
+
+ TargetLock returnLock = this.targetLock;
+ this.targetLock = null;
+
+ PolicyGuard.unlockTarget(returnLock);
+
+ // always return the old target lock so rules can retract it
+ return returnLock;
}
public enum NEW_EVENT_STATUS {
diff --git a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java
index 1af4a312d..02dda2048 100644
--- a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java
+++ b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java
@@ -768,7 +768,7 @@ public class ControlLoopEventManagerTest {
lockLock = manager.lockCurrentOperation();
assertNotNull(lockLock);
PolicyGuard.unlockTarget(lockLock.getB());
- assertNull(manager.unlockCurrentOperation());
+ assertEquals(lockLock.getB(), manager.unlockCurrentOperation());
clom.startOperation(event);