From d3544f097cf6c67baf66578636d09c1148e01c50 Mon Sep 17 00:00:00 2001 From: Jim Hahn Date: Tue, 17 Aug 2021 17:22:26 -0400 Subject: [PATCH] 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 --- .../main/java/org/onap/policy/pdpx/main/XacmlState.java | 16 +++++++++++----- .../policy/pdpx/main/comm/XacmlPdpUpdatePublisher.java | 2 +- 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 deployedPolicies = policyToMap(appManager.getToscaPolicies().keySet()); -- 2.16.6