summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorgjoranv <gv@verizonmedia.com>2020-06-09 11:51:59 +0200
committergjoranv <gv@verizonmedia.com>2020-06-09 11:54:04 +0200
commit56fcb9c8c2894a003e09df269c5f3d578e19fa98 (patch)
tree16b8afbcd2458d65df44feffcdb9b6c460c56a55 /configserver
parentf202879931f279d5602299aa63c8116d74440479 (diff)
Move utility to create a connection pool to a new util class.
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionUtil.java64
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java48
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ApplicationPackageMaintainer.java4
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);