From 754b63e38089758998aa1fa504faea0cfeff10d8 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Mon, 18 Dec 2017 14:01:43 +0100 Subject: Use one supervisor and transport and shut it down once it not needed anymore. --- .../server/filedistribution/CombinedLegacyDistribution.java | 5 +++-- .../server/filedistribution/FileDistributionProvider.java | 6 ++++-- .../vespa/config/server/session/FileDistributionFactory.java | 10 +++++++++- 3 files changed, 16 insertions(+), 5 deletions(-) (limited to 'configserver') diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/CombinedLegacyDistribution.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/CombinedLegacyDistribution.java index 1046ed93491..819f9a9d5d6 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/CombinedLegacyDistribution.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/CombinedLegacyDistribution.java @@ -21,11 +21,12 @@ import java.util.logging.Logger; public class CombinedLegacyDistribution implements FileDistribution { private final static Logger log = Logger.getLogger(CombinedLegacyDistribution.class.getName()); - private final Supervisor supervisor = new Supervisor(new Transport()); + private final Supervisor supervisor; private final FileDistribution legacy; private final boolean disableFileDistributor; - CombinedLegacyDistribution(FileDBHandler legacy, boolean disableFileDistributor) { + CombinedLegacyDistribution(Supervisor supervisor, FileDBHandler legacy, boolean disableFileDistributor) { + this.supervisor = supervisor; this.legacy = legacy; this.disableFileDistributor = disableFileDistributor; } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionProvider.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionProvider.java index 38fa3087f88..cd3f0f7f167 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionProvider.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionProvider.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.config.server.filedistribution; import com.yahoo.config.FileReference; import com.yahoo.config.model.api.FileDistribution; import com.yahoo.config.application.api.FileRegistry; +import com.yahoo.jrt.Supervisor; import com.yahoo.vespa.filedistribution.FileDistributionManager; import java.io.File; @@ -35,16 +36,17 @@ public class FileDistributionProvider { } } - public FileDistributionProvider(File applicationDir, String zooKeepersSpec, + public FileDistributionProvider(Supervisor supervisor, File applicationDir, String zooKeepersSpec, String applicationId, Lock fileDistributionLock, boolean disableFileDistributor) { ensureDirExists(FileDistribution.getDefaultFileDBPath()); final FileDistributionManager manager = new FileDistributionManager( FileDistribution.getDefaultFileDBPath(), applicationDir, zooKeepersSpec, applicationId, fileDistributionLock); - this.fileDistribution = new CombinedLegacyDistribution(new FileDBHandler(manager), disableFileDistributor); + this.fileDistribution = new CombinedLegacyDistribution(supervisor, new FileDBHandler(manager), disableFileDistributor); this.fileRegistry = new CombinedLegacyRegistry(new FileDBRegistry(new ManagerWrapper(manager)), new FileDBRegistry(new ApplicationFileManager(applicationDir, new FileDirectory()))); + } // For testing only diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/FileDistributionFactory.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/FileDistributionFactory.java index 99a34a45a2f..243c47ba3d7 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/FileDistributionFactory.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/FileDistributionFactory.java @@ -3,6 +3,8 @@ package com.yahoo.vespa.config.server.session; import com.google.inject.Inject; import com.yahoo.config.provision.ApplicationId; +import com.yahoo.jrt.Supervisor; +import com.yahoo.jrt.Transport; import com.yahoo.vespa.config.server.filedistribution.FileDistributionLock; import com.yahoo.vespa.config.server.filedistribution.FileDistributionProvider; import com.yahoo.vespa.curator.Curator; @@ -21,6 +23,7 @@ public class FileDistributionFactory { private static final String lockPath = "/vespa/filedistribution/lock"; private final String zkSpec; private final Lock lock; + private final Supervisor supervisor = new Supervisor(new Transport()); @Inject public FileDistributionFactory(Curator curator) { @@ -33,7 +36,12 @@ public class FileDistributionFactory { } public FileDistributionProvider createProvider(File applicationPackage, ApplicationId applicationId, boolean disableFileDistributor) { - return new FileDistributionProvider(applicationPackage, zkSpec, applicationId.serializedForm(), lock, disableFileDistributor); + return new FileDistributionProvider(supervisor, applicationPackage, zkSpec, applicationId.serializedForm(), lock, disableFileDistributor); } + @Override + protected void finalize() throws Throwable { + super.finalize(); + supervisor.transport().shutdown().join(); + } } -- cgit v1.2.3