diff options
author | Jim Hahn <jrh3@att.com> | 2020-04-28 17:22:28 -0400 |
---|---|---|
committer | Jim Hahn <jrh3@att.com> | 2020-04-28 17:48:26 -0400 |
commit | 248e0619a89f27f5d8111adb8743e72d1b11e010 (patch) | |
tree | 76332ab8cc0a24208f866c558c0d428fb5dadbe5 /main | |
parent | f0bbc5f3ab9770e21ef704ea9c5c33b31551f600 (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>
Diffstat (limited to 'main')
-rw-r--r-- | main/src/main/java/org/onap/policy/pap/main/comm/PdpRequests.java | 11 |
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; } } |