aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2020-05-22 09:06:58 -0400
committerJim Hahn <jrh3@att.com>2020-05-22 13:35:50 -0400
commit7e6f32d775b8455e5c8f0c244ef0fb8324ce2b7a (patch)
treed48162ab700e67edf1e4ebe82a08b394f54abbe2
parent0c544a84cd51f49ad3de56a2f1f47f4eb0af6c8e (diff)
Use "outcome" to indicate pending record
Mariadb is setting the "endtime" to the current time by default, so rather than indicate a pending record using a null endtime, just modified the code set "outcome" to "Started" to indicate a pending record. Also added code to ensure the "outcome" is never null, as that causes a DB error. Also addressed a comment from a previous review to log a warning message if more than one matching record is found in operations history. Issue-ID: POLICY-2581 Change-Id: I6bf67551cef46808a79cc15afeb0abbfc1b6d945 Signed-off-by: Jim Hahn <jrh3@att.com>
-rw-r--r--controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2.java6
-rw-r--r--controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImpl.java4
-rw-r--r--controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImplTest.java4
3 files changed, 14 insertions, 0 deletions
diff --git a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2.java b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2.java
index 5e8cbbc2e..9ef892e14 100644
--- a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2.java
+++ b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2.java
@@ -212,6 +212,12 @@ public class ControlLoopOperationManager2 implements Serializable {
clOperation = outcome.toControlLoopOperation();
clOperation.setTarget(policy.getTarget().toString());
clResponse = outcome.getControlLoopResponse();
+
+ if (outcome.getEnd() == null) {
+ clOperation.setOutcome("Started");
+ } else if (clOperation.getOutcome() == null) {
+ clOperation.setOutcome("");
+ }
}
}
diff --git a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImpl.java b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImpl.java
index 1d108a349..2b67865bf 100644
--- a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImpl.java
+++ b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImpl.java
@@ -278,6 +278,10 @@ public class OperationHistoryDataManagerImpl implements OperationHistoryDataMana
.setParameter(6, record.getTargetEntity())
.getResultList();
+ if (results.size() > 1) {
+ logger.warn("unexpected operation history record count {} for {}", results.size(), event.getRequestId());
+ }
+
Dbao entry = (results.isEmpty() ? new Dbao() : results.get(0));
entry.setClosedLoopName(event.getClosedLoopControlName());
diff --git a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImplTest.java b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImplTest.java
index e6d42d452..697628144 100644
--- a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImplTest.java
+++ b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImplTest.java
@@ -340,17 +340,21 @@ public class OperationHistoryDataManagerImplTest {
*/
// no start time
+ operation.setStart(null);
mgr.store(REQ_ID, event, MY_ENTITY, operation);
// no end time
+ operation = new ControlLoopOperation(operation);
operation.setStart(Instant.now());
mgr.store(REQ_ID, event, MY_ENTITY, operation);
// both start and end times
+ operation = new ControlLoopOperation(operation);
operation.setEnd(Instant.now());
mgr.store(REQ_ID, event, MY_ENTITY, operation);
// only end time
+ operation = new ControlLoopOperation(operation);
operation.setStart(null);
mgr.store(REQ_ID, event, MY_ENTITY, operation);