From 5e3c4449140ece8dde2502d04f6ac476a5ca6c89 Mon Sep 17 00:00:00 2001 From: PatrikBuhr Date: Mon, 18 May 2020 09:23:18 +0200 Subject: [PATCH] Two bugfies, disabling use of TCP client pool TCP client pool is not used for connections. Connections were for some reason not reused and this consumed a lot of memory which was never released. Registerring of a service should start a new kepp alive interval. Change-Id: If53a58fdf971b1b771560dda5f24218bec1de92a Issue-ID: NONRTRIC-195 Signed-off-by: PatrikBuhr --- policy-agent/config/application.yaml | 2 +- .../main/java/org/oransc/policyagent/clients/AsyncRestClient.java | 8 ++++++-- .../src/main/java/org/oransc/policyagent/repository/Services.java | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/policy-agent/config/application.yaml b/policy-agent/config/application.yaml index 55a1d64c..c0ddfb57 100644 --- a/policy-agent/config/application.yaml +++ b/policy-agent/config/application.yaml @@ -9,7 +9,7 @@ management: endpoints: web: exposure: - include: "loggers,logfile,health,info,metrics,threaddump" + include: "loggers,logfile,health,info,metrics,threaddump,heapdump" logging: level: 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 4a995c96..4ba58c7b 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 @@ -57,6 +57,7 @@ import org.springframework.web.reactive.function.client.WebClientResponseExcepti import reactor.core.publisher.Mono; import reactor.netty.http.client.HttpClient; +import reactor.netty.resources.ConnectionProvider; import reactor.netty.tcp.TcpClient; /** @@ -178,8 +179,9 @@ public class AsyncRestClient { } private Mono> retrieve(Object traceTag, RequestHeadersSpec request) { + final Class clazz = String.class; return request.retrieve() // - .toEntity(String.class) // + .toEntity(clazz) // .doOnNext(entity -> logger.trace("{} Received: {}", traceTag, entity.getBody())) // .doOnError(throwable -> onHttpError(traceTag, throwable)); } @@ -263,9 +265,11 @@ public class AsyncRestClient { } private WebClient createWebClient(String baseUrl, SslContext sslContext) { - TcpClient tcpClient = TcpClient.create() // + ConnectionProvider connectionProvider = ConnectionProvider.newConnection(); + TcpClient tcpClient = TcpClient.create(connectionProvider) // .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 10_000) // .secure(c -> c.sslContext(sslContext)) // + .doOnConnected(connection -> { connection.addHandlerLast(new ReadTimeoutHandler(30)); connection.addHandlerLast(new WriteTimeoutHandler(30)); diff --git a/policy-agent/src/main/java/org/oransc/policyagent/repository/Services.java b/policy-agent/src/main/java/org/oransc/policyagent/repository/Services.java index f829c7c8..1fd08a80 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/repository/Services.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/repository/Services.java @@ -47,6 +47,7 @@ public class Services { public synchronized void put(Service service) { logger.debug("Put service: {}", service.getName()); + service.keepAlive(); registeredServices.put(service.getName(), service); } -- 2.16.6