summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2020-08-03 00:02:54 +0200
committerGitHub <noreply@github.com>2020-08-03 00:02:54 +0200
commit6a132714b5123f917ff068431cb564d6f7a48d35 (patch)
treea8cf4667d3a9e7328ef3751e6d057fed095baf33
parentebd308f6fdc067355c80c1bc5b7f1ac9ebce6e95 (diff)
parent89a0c525b7398d5aaacdbb60e37535ab80d4c57d (diff)
Merge pull request #13959 from vespa-engine/balder/close-connectionpool
Cleanup connection pool.
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/ConnectionPool.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ApplicationPackageMaintainer.java14
2 files changed, 12 insertions, 4 deletions
diff --git a/config/src/main/java/com/yahoo/vespa/config/ConnectionPool.java b/config/src/main/java/com/yahoo/vespa/config/ConnectionPool.java
index 5a6f8a8848b..c6a93348d39 100644
--- a/config/src/main/java/com/yahoo/vespa/config/ConnectionPool.java
+++ b/config/src/main/java/com/yahoo/vespa/config/ConnectionPool.java
@@ -6,7 +6,7 @@ import com.yahoo.jrt.Supervisor;
/**
* @author hmusum
*/
-public interface ConnectionPool {
+public interface ConnectionPool extends AutoCloseable {
void close();
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ApplicationPackageMaintainer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ApplicationPackageMaintainer.java
index e539acba916..e9687000b3c 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ApplicationPackageMaintainer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ApplicationPackageMaintainer.java
@@ -3,6 +3,7 @@ package com.yahoo.vespa.config.server.maintenance;
import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.config.FileReference;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.vespa.config.ConnectionPool;
import com.yahoo.vespa.config.server.ApplicationRepository;
import com.yahoo.vespa.config.server.session.RemoteSession;
import com.yahoo.vespa.config.server.session.SessionRepository;
@@ -32,7 +33,7 @@ public class ApplicationPackageMaintainer extends ConfigServerMaintainer {
private static final Logger log = Logger.getLogger(ApplicationPackageMaintainer.class.getName());
private final ApplicationRepository applicationRepository;
- private final ConfigserverConfig configserverConfig;
+ private final ConnectionPool connectionPool;
private final File downloadDirectory;
private final BooleanFlag distributeApplicationPackage;
@@ -42,7 +43,8 @@ public class ApplicationPackageMaintainer extends ConfigServerMaintainer {
FlagSource flagSource) {
super(applicationRepository, curator, flagSource, interval, interval);
this.applicationRepository = applicationRepository;
- this.configserverConfig = applicationRepository.configserverConfig();
+ ConfigserverConfig configserverConfig = applicationRepository.configserverConfig();
+ connectionPool = createConnectionPool(configserverConfig);
distributeApplicationPackage = Flags.CONFIGSERVER_DISTRIBUTE_APPLICATION_PACKAGE.bindTo(flagSource);
downloadDirectory = new File(Defaults.getDefaults().underVespaHome(configserverConfig.fileReferencesDir()));
@@ -53,7 +55,7 @@ public class ApplicationPackageMaintainer extends ConfigServerMaintainer {
boolean success = true;
if (! distributeApplicationPackage.value()) return success;
- try (var fileDownloader = new FileDownloader(createConnectionPool(configserverConfig), downloadDirectory)) {
+ try (var fileDownloader = new FileDownloader(connectionPool, downloadDirectory)) {
for (var applicationId : applicationRepository.listApplications()) {
log.fine(() -> "Verifying application package for " + applicationId);
RemoteSession session = applicationRepository.getActiveSession(applicationId);
@@ -80,6 +82,12 @@ public class ApplicationPackageMaintainer extends ConfigServerMaintainer {
return success;
}
+ @Override
+ public void close() {
+ connectionPool.close();
+ super.close();
+ }
+
private void createLocalSessionIfMissing(ApplicationId applicationId, long sessionId) {
Tenant tenant = applicationRepository.tenantRepository().getTenant(applicationId.tenant());
SessionRepository sessionRepository = tenant.getSessionRepository();