From 248e0619a89f27f5d8111adb8743e72d1b11e010 Mon Sep 17 00:00:00 2001 From: Jim Hahn Date: Tue, 28 Apr 2020 17:22:28 -0400 Subject: PAP erroneously undeploying policies The problem appears to be a multi-threading type of issue: - PAP sends request to XACML - JMeter pushes the next deployment request into PAP - PAP receives response from XACML - based on request ID, the response is routed to the handler, but blocks while PAP processes the deployment request - PAP replaces old list of policies with new, and changes the request ID - PAP responds to JMeter - PAP handles XACML response, even though it's request ID no longer matches Modified PAP to no longer replace any messages that are at the head of the queue. Fixed the license. Issue-ID: POLICY-2527 Change-Id: I43218a7d0591649d761e17282189e51d5dbd26ed Signed-off-by: Jim Hahn --- .../main/java/org/onap/policy/pap/main/comm/PdpRequests.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/main/src/main/java/org/onap/policy/pap/main/comm/PdpRequests.java b/main/src/main/java/org/onap/policy/pap/main/comm/PdpRequests.java index 6a539a46..53d3fbbd 100644 --- a/main/src/main/java/org/onap/policy/pap/main/comm/PdpRequests.java +++ b/main/src/main/java/org/onap/policy/pap/main/comm/PdpRequests.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP PAP * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -50,8 +50,8 @@ public class PdpRequests { /** * Queue of requests to be published. The first item in the queue is currently being - * published. Currently, there will be at most three messages in the queue: PASSIVE, - * ACTIVE, and UPDATE. + * published. Currently, there will be at most four messages in the queue: the request + * being worked, one PASSIVE request, one ACTIVE, and one UPDATE. */ private final Queue requests = new ArrayDeque<>(3); @@ -80,9 +80,12 @@ public class PdpRequests { } // try to reconfigure an existing request with the new message + // + // don't reconfigure the first request PdpMessage newMessage = request.getMessage(); + int count = 0; for (Request req : requests) { - if (req.reconfigure(newMessage)) { + if (count++ > 0 && req.reconfigure(newMessage)) { return; } } -- cgit 1.2.3-korg