aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiam Fallon <liam.fallon@est.tech>2023-11-12 16:56:26 +0000
committerGerrit Code Review <gerrit@onap.org>2023-11-12 16:56:26 +0000
commit4b4b9b3eaba3d8c2830fb637d2e0805c40ae0afb (patch)
tree134c0bc4a81ddd8f85e301d178e10e6f82549c7a
parent6eacb70d82686c333d0b17fbad9876173cf3e25f (diff)
parent3673c303b0939692ded673e96024316af326d342 (diff)
Merge "Fix synchronization issues in policy-api"
-rwxr-xr-x[-rw-r--r--]main/src/main/java/org/onap/policy/api/main/rest/ApiRestController.java36
-rw-r--r--main/src/main/java/org/onap/policy/api/main/rest/CommonRestController.java3
-rw-r--r--main/src/main/java/org/onap/policy/api/main/rest/NodeTemplateController.java18
3 files changed, 57 insertions, 0 deletions
diff --git a/main/src/main/java/org/onap/policy/api/main/rest/ApiRestController.java b/main/src/main/java/org/onap/policy/api/main/rest/ApiRestController.java
index b44e60fa..9745ec94 100644..100755
--- a/main/src/main/java/org/onap/policy/api/main/rest/ApiRestController.java
+++ b/main/src/main/java/org/onap/policy/api/main/rest/ApiRestController.java
@@ -158,11 +158,17 @@ public class ApiRestController extends CommonRestController implements PolicyDes
NetLoggerUtil.log(EventType.IN, CommInfrastructure.REST, "/policytypes", toJson(body));
}
try {
+ mutex.acquire();
ToscaServiceTemplate serviceTemplate = toscaServiceTemplateService.createPolicyType(body);
return makeOkResponse(requestId, serviceTemplate);
} catch (PfModelRuntimeException pfme) {
final var msg = "POST /policytypes";
throw new PolicyApiRuntimeException(msg, pfme.getCause(), pfme.getErrorResponse(), requestId);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new PolicyApiRuntimeException(e.getMessage(), null, null, requestId);
+ } finally {
+ mutex.release();
}
}
@@ -179,12 +185,18 @@ public class ApiRestController extends CommonRestController implements PolicyDes
String versionId,
UUID requestId) {
try {
+ mutex.acquire();
ToscaServiceTemplate serviceTemplate =
toscaServiceTemplateService.deletePolicyType(policyTypeId, versionId);
return makeOkResponse(requestId, serviceTemplate);
} catch (PfModelRuntimeException pfme) {
var msg = String.format("DELETE /policytypes/%s/versions/%s", policyTypeId, versionId);
throw new PolicyApiRuntimeException(msg, pfme.getCause(), pfme.getErrorResponse(), requestId);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new PolicyApiRuntimeException(e.getMessage(), null, null, requestId);
+ } finally {
+ mutex.release();
}
}
@@ -310,12 +322,18 @@ public class ApiRestController extends CommonRestController implements PolicyDes
"/policytypes/" + policyTypeId + "/versions/" + policyTypeVersion + "/policies", toJson(body));
}
try {
+ mutex.acquire();
ToscaServiceTemplate serviceTemplate =
toscaServiceTemplateService.createPolicy(policyTypeId, policyTypeVersion, body);
return makeOkResponse(requestId, serviceTemplate);
} catch (PfModelRuntimeException pfme) {
var msg = String.format("POST /policytypes/%s/versions/%s/policies", policyTypeId, policyTypeVersion);
throw new PolicyApiRuntimeException(msg, pfme.getCause(), pfme.getErrorResponse(), requestId);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new PolicyApiRuntimeException(e.getMessage(), null, null, requestId);
+ } finally {
+ mutex.release();
}
}
@@ -336,6 +354,7 @@ public class ApiRestController extends CommonRestController implements PolicyDes
String policyVersion,
UUID requestId) {
try {
+ mutex.acquire();
ToscaServiceTemplate serviceTemplate =
toscaServiceTemplateService.deletePolicy(policyTypeId, policyTypeVersion, policyId, policyVersion);
return makeOkResponse(requestId, serviceTemplate);
@@ -343,6 +362,11 @@ public class ApiRestController extends CommonRestController implements PolicyDes
var msg = String.format("DELETE /policytypes/%s/versions/%s/policies/%s/versions/%s",
policyTypeId, policyTypeVersion, policyId, policyVersion);
throw new PolicyApiRuntimeException(msg, pfme.getCause(), pfme.getErrorResponse(), requestId);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new PolicyApiRuntimeException(e.getMessage(), null, null, requestId);
+ } finally {
+ mutex.release();
}
}
@@ -406,11 +430,17 @@ public class ApiRestController extends CommonRestController implements PolicyDes
NetLoggerUtil.log(EventType.IN, CommInfrastructure.REST, "/policies", toJson(body));
}
try {
+ mutex.acquire();
ToscaServiceTemplate serviceTemplate = toscaServiceTemplateService.createPolicies(body);
return makeOkResponse(requestId, serviceTemplate);
} catch (PfModelRuntimeException pfme) {
final var msg = "POST /policies";
throw new PolicyApiRuntimeException(msg, pfme.getCause(), pfme.getErrorResponse(), requestId);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new PolicyApiRuntimeException(e.getMessage(), null, null, requestId);
+ } finally {
+ mutex.release();
}
}
@@ -427,12 +457,18 @@ public class ApiRestController extends CommonRestController implements PolicyDes
String policyVersion,
UUID requestId) {
try {
+ mutex.acquire();
ToscaServiceTemplate serviceTemplate =
toscaServiceTemplateService.deletePolicy(null, null, policyId, policyVersion);
return makeOkResponse(requestId, serviceTemplate);
} catch (PfModelRuntimeException pfme) {
var msg = String.format("DELETE /policies/%s/versions/%s", policyId, policyVersion);
throw new PolicyApiRuntimeException(msg, pfme.getCause(), pfme.getErrorResponse(), requestId);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new PolicyApiRuntimeException(e.getMessage(), null, null, requestId);
+ } finally {
+ mutex.release();
}
}
}
diff --git a/main/src/main/java/org/onap/policy/api/main/rest/CommonRestController.java b/main/src/main/java/org/onap/policy/api/main/rest/CommonRestController.java
index eadd8d34..d105058e 100644
--- a/main/src/main/java/org/onap/policy/api/main/rest/CommonRestController.java
+++ b/main/src/main/java/org/onap/policy/api/main/rest/CommonRestController.java
@@ -26,6 +26,7 @@ package org.onap.policy.api.main.rest;
import java.util.Objects;
import java.util.UUID;
+import java.util.concurrent.Semaphore;
import org.onap.policy.api.main.exception.PolicyApiRuntimeException;
import org.onap.policy.common.utils.coder.Coder;
import org.onap.policy.common.utils.coder.CoderException;
@@ -42,6 +43,8 @@ import org.springframework.web.context.request.WebRequest;
*/
public class CommonRestController {
+ protected static Semaphore mutex = new Semaphore(1);
+
private static final Logger LOGGER = LoggerFactory.getLogger(CommonRestController.class);
protected static final String EXTENSION_NAME = "interface info";
diff --git a/main/src/main/java/org/onap/policy/api/main/rest/NodeTemplateController.java b/main/src/main/java/org/onap/policy/api/main/rest/NodeTemplateController.java
index 44962663..944a6f85 100644
--- a/main/src/main/java/org/onap/policy/api/main/rest/NodeTemplateController.java
+++ b/main/src/main/java/org/onap/policy/api/main/rest/NodeTemplateController.java
@@ -63,11 +63,17 @@ public class NodeTemplateController extends CommonRestController implements Tosc
toJson(body));
}
try {
+ mutex.acquire();
ToscaServiceTemplate nodeTemplates = toscaServiceTemplateService.createToscaNodeTemplates(body);
return makeOkResponse(requestId, nodeTemplates);
} catch (PfModelException | PfModelRuntimeException pfme) {
final var msg = "POST /nodetemplates";
throw new PolicyApiRuntimeException(msg, pfme.getCause(), pfme.getErrorResponse(), requestId);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new PolicyApiRuntimeException(e.getMessage(), null, null, requestId);
+ } finally {
+ mutex.release();
}
}
@@ -86,11 +92,17 @@ public class NodeTemplateController extends CommonRestController implements Tosc
toJson(body));
}
try {
+ mutex.acquire();
ToscaServiceTemplate nodeTemplates = toscaServiceTemplateService.updateToscaNodeTemplates(body);
return makeOkResponse(requestId, nodeTemplates);
} catch (PfModelException | PfModelRuntimeException pfme) {
final var msg = "PUT /nodetemplates";
throw new PolicyApiRuntimeException(msg, pfme.getCause(), pfme.getErrorResponse(), requestId);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new PolicyApiRuntimeException(e.getMessage(), null, null, requestId);
+ } finally {
+ mutex.release();
}
}
@@ -104,11 +116,17 @@ public class NodeTemplateController extends CommonRestController implements Tosc
@Override
public ResponseEntity<ToscaServiceTemplate> deleteToscaNodeTemplates(String name, String version, UUID requestId) {
try {
+ mutex.acquire();
ToscaServiceTemplate nodeTemplates = toscaServiceTemplateService.deleteToscaNodeTemplate(name, version);
return makeOkResponse(requestId, nodeTemplates);
} catch (PfModelException | PfModelRuntimeException pfme) {
final var msg = String.format("DELETE /nodetemplates/%s/versions/%s", name, version);
throw new PolicyApiRuntimeException(msg, pfme.getCause(), pfme.getErrorResponse(), requestId);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new PolicyApiRuntimeException(e.getMessage(), null, null, requestId);
+ } finally {
+ mutex.release();
}
}