aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2020-04-28 17:22:28 -0400
committerJim Hahn <jrh3@att.com>2020-04-28 17:48:26 -0400
commit248e0619a89f27f5d8111adb8743e72d1b11e010 (patch)
tree76332ab8cc0a24208f866c558c0d428fb5dadbe5
parentf0bbc5f3ab9770e21ef704ea9c5c33b31551f600 (diff)
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 <jrh3@att.com>
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/comm/PdpRequests.java11
1 files 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<Request> 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;
}
}