Synchronize updates to xacml-pdp state 12/123312/1
authorJim Hahn <jrh3@att.com>
Tue, 17 Aug 2021 21:22:26 +0000 (17:22 -0400)
committerJim Hahn <jrh3@att.com>
Thu, 19 Aug 2021 13:15:13 +0000 (13:15 +0000)
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)

main/src/main/java/org/onap/policy/pdpx/main/XacmlState.java
main/src/main/java/org/onap/policy/pdpx/main/comm/XacmlPdpUpdatePublisher.java

index db83b71..b040eb7 100644 (file)
@@ -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);
     }
index 4882760..c4c24f9 100644 (file)
@@ -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());