From ead43f520102bc6201aadb770b5f289c9dc4691c 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 (cherry picked from commit d3544f097cf6c67baf66578636d09c1148e01c50) --- .../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 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 incomingPolicies = new HashSet<>(message.getPolicies() == null ? Collections.emptyList() : message.getPolicies()); -- 2.16.6