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-17 17:23:39 -0400
commitd3544f097cf6c67baf66578636d09c1148e01c50 (patch)
treef5372c9dcbf47b53faab152417f972a77380bef4
parentd91e75bc0c1953c034f263863c41d506170dedcf (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>
-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 0b6f30ca..17995fd6 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);
+
/**
* Unique name for the xacml-pdp JVM, used in PdpStatus messages.
*/
@@ -74,7 +78,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());
}
/**
@@ -82,7 +86,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);
@@ -96,7 +100,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());
/*
@@ -120,7 +125,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());
@@ -132,7 +137,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 da6fdb2c..539b541b 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
@@ -54,7 +54,7 @@ public class XacmlPdpUpdatePublisher {
*
* @param message Incoming message
*/
- public void handlePdpUpdate(PdpUpdate message) {
+ public synchronized void handlePdpUpdate(PdpUpdate message) {
// current data
Map<ToscaConceptIdentifier, ToscaPolicy> deployedPolicies = policyToMap(appManager.getToscaPolicies().keySet());