From eaba0077fc8a009d47e64838e1e0b03b2b910169 Mon Sep 17 00:00:00 2001 From: PatrikBuhr Date: Mon, 18 May 2020 09:23:18 +0200 Subject: [PATCH] Two minor bugfies Enabled receiving of big RESTCONF responses Serializing policy deletion when services are disabled in order to avoid exessive memory consumption when there are many policies. Change-Id: I10766c70861e4d3931b09cec98d281918e2eefef Issue-ID: NONRTRIC-195 Signed-off-by: PatrikBuhr --- .../main/java/org/oransc/policyagent/clients/AsyncRestClient.java | 8 +++++++- .../java/org/oransc/policyagent/tasks/ServiceSupervision.java | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/policy-agent/src/main/java/org/oransc/policyagent/clients/AsyncRestClient.java b/policy-agent/src/main/java/org/oransc/policyagent/clients/AsyncRestClient.java index 3df59bf5..4a995c96 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/clients/AsyncRestClient.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/clients/AsyncRestClient.java @@ -50,6 +50,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.http.client.reactive.ReactorClientHttpConnector; import org.springframework.lang.Nullable; import org.springframework.util.ResourceUtils; +import org.springframework.web.reactive.function.client.ExchangeStrategies; import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.reactive.function.client.WebClient.RequestHeadersSpec; import org.springframework.web.reactive.function.client.WebClientResponseException; @@ -179,7 +180,7 @@ public class AsyncRestClient { private Mono> retrieve(Object traceTag, RequestHeadersSpec request) { return request.retrieve() // .toEntity(String.class) // - .doOnNext(entity -> logger.trace("{} Received: {}", traceTag, entity.getBody())) + .doOnNext(entity -> logger.trace("{} Received: {}", traceTag, entity.getBody())) // .doOnError(throwable -> onHttpError(traceTag, throwable)); } @@ -272,9 +273,14 @@ public class AsyncRestClient { HttpClient httpClient = HttpClient.from(tcpClient); ReactorClientHttpConnector connector = new ReactorClientHttpConnector(httpClient); + ExchangeStrategies exchangeStrategies = ExchangeStrategies.builder() // + .codecs(configurer -> configurer.defaultCodecs().maxInMemorySize(-1)) // + .build(); + return WebClient.builder() // .clientConnector(connector) // .baseUrl(baseUrl) // + .exchangeStrategies(exchangeStrategies) // .build(); } diff --git a/policy-agent/src/main/java/org/oransc/policyagent/tasks/ServiceSupervision.java b/policy-agent/src/main/java/org/oransc/policyagent/tasks/ServiceSupervision.java index 751c0ac0..9c555329 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/tasks/ServiceSupervision.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/tasks/ServiceSupervision.java @@ -50,6 +50,7 @@ import reactor.core.publisher.Mono; @SuppressWarnings("squid:S2629") // Invoke method(s) only conditionally public class ServiceSupervision { private static final Logger logger = LoggerFactory.getLogger(ServiceSupervision.class); + static final int CONCURRENCY_RIC = 1; // How may paralell requests that is sent private final Services services; private final Policies policies; private A1ClientFactory a1ClientFactory; @@ -85,7 +86,7 @@ public class ServiceSupervision { .doOnNext(service -> logger.info("Service is expired: {}", service.getName())) // .doOnNext(service -> services.remove(service.getName())) // .flatMap(this::getAllPoliciesForService) // - .flatMap(this::deletePolicy); + .flatMap(this::deletePolicy, CONCURRENCY_RIC); } @SuppressWarnings("squid:S2629") // Invoke method(s) only conditionally -- 2.16.6