summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2021-08-17 17:22:26 -0400
committerJim Hahn <jrh3@att.com>2021-08-19 13:15:13 +0000
commitead43f520102bc6201aadb770b5f289c9dc4691c (patch)
treed9405b3ae7f294a0b1ae5b86c9b6fdad586b26ff
parent2670cce1b59839033aa233d72e51f0f31cc4b6e1 (diff)
Synchronize updates to xacml-pdp state
Perhaps this will fix the issue wherein xacml-pdp heartbeats continue to say "PASSIVE" even after it's set to "ACTIVE". Issue-ID: POLICY-3531 Change-Id: I6639ed7ca793a899f62e5c80b336408f5e8b2dc6 Signed-off-by: Jim Hahn <jrh3@att.com> (cherry picked from commit d3544f097cf6c67baf66578636d09c1148e01c50)
-rw-r--r--main/src/main/java/org/onap/policy/pdpx/main/XacmlState.java16
-rw-r--r--main/src/main/java/org/onap/policy/pdpx/main/comm/XacmlPdpUpdatePublisher.java2
2 files changed, 12 insertions, 6 deletions
diff --git a/main/src/main/java/org/onap/policy/pdpx/main/XacmlState.java b/main/src/main/java/org/onap/policy/pdpx/main/XacmlState.java
index db83b716..b040eb71 100644
--- a/main/src/main/java/org/onap/policy/pdpx/main/XacmlState.java
+++ b/main/src/main/java/org/onap/policy/pdpx/main/XacmlState.java
@@ -33,11 +33,15 @@ import org.onap.policy.models.pdp.enums.PdpResponseStatus;
import org.onap.policy.models.pdp.enums.PdpState;
import org.onap.policy.pdpx.main.rest.XacmlPdpApplicationManager;
import org.onap.policy.pdpx.main.startstop.XacmlPdpActivator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Current state of this XACML PDP.
*/
public class XacmlState {
+ private static final Logger LOGGER = LoggerFactory.getLogger(XacmlState.class);
+
/**
* The application manager.
*/
@@ -69,7 +73,7 @@ public class XacmlState {
* @return {@code true} if this PDP should handle the message, {@code false} otherwise
*/
public boolean shouldHandle(PdpMessage message) {
- return message.appliesTo(status.getName(), status.getPdpGroup(), status.getPdpSubgroup());
+ return message.appliesTo(status.getName(), status.getPdpGroup(), status.getPdpType());
}
/**
@@ -77,7 +81,7 @@ public class XacmlState {
*
* @return a new heart beat message
*/
- public PdpStatus genHeartbeat() {
+ public synchronized PdpStatus genHeartbeat() {
// first, update status fields
status.setHealthy(XacmlPdpActivator.getCurrent().isAlive() ? PdpHealthStatus.HEALTHY
: PdpHealthStatus.NOT_HEALTHY);
@@ -91,7 +95,8 @@ public class XacmlState {
* @param message message from which to update the internal state
* @return a response to the message
*/
- public PdpStatus updateInternalState(PdpStateChange message) {
+ public synchronized PdpStatus updateInternalState(PdpStateChange message) {
+ LOGGER.info("set state of {} to {}", this, message.getState());
status.setState(message.getState());
/*
@@ -115,7 +120,7 @@ public class XacmlState {
* @param message message from which to update the internal state
* @return a response to the message
*/
- public PdpStatus updateInternalState(PdpUpdate message, String errMessage) {
+ public synchronized PdpStatus updateInternalState(PdpUpdate message, String errMessage) {
status.setPdpSubgroup(message.getPdpSubgroup());
status.setPolicies(appManager.getToscaPolicyIdentifiers());
@@ -127,7 +132,8 @@ public class XacmlState {
*
* @return the current PdpStatus with Terminated state
*/
- public PdpStatus terminatePdpMessage() {
+ public synchronized PdpStatus terminatePdpMessage() {
+ LOGGER.info("set state of {} to {}", this, PdpState.TERMINATED);
status.setState(PdpState.TERMINATED);
return new PdpStatus(status);
}
diff --git a/main/src/main/java/org/onap/policy/pdpx/main/comm/XacmlPdpUpdatePublisher.java b/main/src/main/java/org/onap/policy/pdpx/main/comm/XacmlPdpUpdatePublisher.java
index 4882760e..c4c24f9f 100644
--- a/main/src/main/java/org/onap/policy/pdpx/main/comm/XacmlPdpUpdatePublisher.java
+++ b/main/src/main/java/org/onap/policy/pdpx/main/comm/XacmlPdpUpdatePublisher.java
@@ -61,7 +61,7 @@ public class XacmlPdpUpdatePublisher {
*
* @param message Incoming message
*/
- public void handlePdpUpdate(PdpUpdate message) {
+ public synchronized void handlePdpUpdate(PdpUpdate message) {
Set<ToscaPolicy> incomingPolicies =
new HashSet<>(message.getPolicies() == null ? Collections.emptyList() : message.getPolicies());