diff options
author | gjoranv <gv@verizonmedia.com> | 2020-06-09 11:51:59 +0200 |
---|---|---|
committer | gjoranv <gv@verizonmedia.com> | 2020-06-09 11:54:04 +0200 |
commit | 56fcb9c8c2894a003e09df269c5f3d578e19fa98 (patch) | |
tree | 16b8afbcd2458d65df44feffcdb9b6c460c56a55 /configserver | |
parent | f202879931f279d5602299aa63c8116d74440479 (diff) |
Move utility to create a connection pool to a new util class.
Diffstat (limited to 'configserver')
3 files changed, 71 insertions, 45 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionUtil.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionUtil.java new file mode 100644 index 00000000000..8d50c2cf761 --- /dev/null +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionUtil.java @@ -0,0 +1,64 @@ +package com.yahoo.vespa.config.server.filedistribution; + +import com.yahoo.cloud.config.ConfigserverConfig; +import com.yahoo.config.subscription.ConfigSourceSet; +import com.yahoo.jrt.Supervisor; +import com.yahoo.jrt.Transport; +import com.yahoo.net.HostName; +import com.yahoo.vespa.config.Connection; +import com.yahoo.vespa.config.ConnectionPool; +import com.yahoo.vespa.config.JRTConnectionPool; +import com.yahoo.vespa.config.server.ConfigServerSpec; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * Utilities related to file distribution on config servers. + * + * @author musum + * @author gjoranv + */ +public class FileDistributionUtil { + + + /** + * Returns a connection pool with all config servers except this one, or an empty pool if there + * is only one config server. + */ + public static ConnectionPool createConnectionPool(ConfigserverConfig configserverConfig) { + List<String> configServers = ConfigServerSpec.fromConfig(configserverConfig) + .stream() + .filter(spec -> !spec.getHostName().equals(HostName.getLocalhost())) + .map(spec -> "tcp/" + spec.getHostName() + ":" + spec.getConfigServerPort()) + .collect(Collectors.toList()); + + return configServers.size() > 0 ? new JRTConnectionPool(new ConfigSourceSet(configServers)) : emptyConnectionPool(); + } + + static ConnectionPool emptyConnectionPool() { + return new EmptyConnectionPool(); + } + + private static class EmptyConnectionPool implements ConnectionPool { + + @Override + public void close() {} + + @Override + public void setError(Connection connection, int i) {} + + @Override + public Connection getCurrent() { return null; } + + @Override + public Connection setNewCurrentConnection() { return null; } + + @Override + public int getSize() { return 0; } + + @Override + public Supervisor getSupervisor() { return new Supervisor(new Transport()); } + } + +} diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java index 1e7f9fd69e7..99cdb0a74dc 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java @@ -4,18 +4,10 @@ package com.yahoo.vespa.config.server.filedistribution; import com.google.inject.Inject; import com.yahoo.cloud.config.ConfigserverConfig; import com.yahoo.config.FileReference; -import com.yahoo.config.subscription.ConfigSourceSet; import com.yahoo.jrt.Int32Value; import com.yahoo.jrt.Request; import com.yahoo.jrt.StringValue; -import com.yahoo.jrt.Supervisor; -import com.yahoo.jrt.Transport; -import java.util.logging.Level; -import com.yahoo.net.HostName; -import com.yahoo.vespa.config.Connection; import com.yahoo.vespa.config.ConnectionPool; -import com.yahoo.vespa.config.JRTConnectionPool; -import com.yahoo.vespa.config.server.ConfigServerSpec; import com.yahoo.vespa.defaults.Defaults; import com.yahoo.vespa.filedistribution.CompressedFileReference; import com.yahoo.vespa.filedistribution.FileDownloader; @@ -27,12 +19,14 @@ import com.yahoo.yolean.Exceptions; import java.io.File; import java.io.IOException; -import java.util.List; import java.util.Optional; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.logging.Level; import java.util.logging.Logger; -import java.util.stream.Collectors; + +import static com.yahoo.vespa.config.server.filedistribution.FileDistributionUtil.createConnectionPool; +import static com.yahoo.vespa.config.server.filedistribution.FileDistributionUtil.emptyConnectionPool; public class FileServer { private static final Logger log = Logger.getLogger(FileServer.class.getName()); @@ -79,7 +73,7 @@ public class FileServer { // For testing only public FileServer(File rootDir) { - this(new EmptyConnectionPool(), rootDir); + this(emptyConnectionPool(), rootDir); } private FileServer(ConnectionPool connectionPool, File rootDir) { @@ -199,36 +193,4 @@ public class FileServer { downloader.close(); } - // TODO: move to e.g. a util class - // Connection pool with all config servers except this one (might be an empty pool if there is only one config server) - public static ConnectionPool createConnectionPool(ConfigserverConfig configserverConfig) { - List<String> configServers = ConfigServerSpec.fromConfig(configserverConfig) - .stream() - .filter(spec -> !spec.getHostName().equals(HostName.getLocalhost())) - .map(spec -> "tcp/" + spec.getHostName() + ":" + spec.getConfigServerPort()) - .collect(Collectors.toList()); - - return configServers.size() > 0 ? new JRTConnectionPool(new ConfigSourceSet(configServers)) : new EmptyConnectionPool(); - } - - private static class EmptyConnectionPool implements ConnectionPool { - - @Override - public void close() {} - - @Override - public void setError(Connection connection, int i) {} - - @Override - public Connection getCurrent() { return null; } - - @Override - public Connection setNewCurrentConnection() { return null; } - - @Override - public int getSize() { return 0; } - - @Override - public Supervisor getSupervisor() { return new Supervisor(new Transport()); } - } } 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 2a00a175fd8..e10076b67e3 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,7 +3,6 @@ package com.yahoo.vespa.config.server.maintenance; import com.yahoo.cloud.config.ConfigserverConfig; import com.yahoo.config.FileReference; import com.yahoo.vespa.config.server.ApplicationRepository; -import com.yahoo.vespa.config.server.filedistribution.FileServer; import com.yahoo.vespa.config.server.session.RemoteSession; import com.yahoo.vespa.curator.Curator; import com.yahoo.vespa.defaults.Defaults; @@ -18,6 +17,7 @@ import java.util.Set; import java.util.logging.Logger; import static com.yahoo.vespa.config.server.ApplicationRepository.getFileReferencesOnDisk; +import static com.yahoo.vespa.config.server.filedistribution.FileDistributionUtil.createConnectionPool; /** * Verifies that all active sessions has an application package on local disk. @@ -52,7 +52,7 @@ public class ApplicationPackageMaintainer extends ConfigServerMaintainer { protected void maintain() { if (! distributeApplicationPackage.value()) return; - var fileDownloader = new FileDownloader(FileServer.createConnectionPool(configserverConfig)); + var fileDownloader = new FileDownloader(createConnectionPool(configserverConfig)); try { for (var applicationId : applicationRepository.listApplications()) { RemoteSession session = applicationRepository.getActiveSession(applicationId); |