summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2020-01-14 08:10:43 +0100
committerHarald Musum <musum@verizonmedia.com>2020-01-14 08:10:43 +0100
commit7f3ba63a648f35e0bf9246a1c36da29e840d1031 (patch)
tree02397bbcdda339037298139130c18827b2e0c378
parent7250e7a5cfafaa8e52a56c7990437be740761093 (diff)
Make sure to shutdown executor
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java4
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java1
-rw-r--r--filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDownloader.java4
-rw-r--r--filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java10
-rw-r--r--filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java6
5 files changed, 22 insertions, 3 deletions
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 3034c7dfd53..cb4945bdab3 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
@@ -195,6 +195,10 @@ public class FileServer {
return downloader;
}
+ public void close() {
+ downloader.close();
+ }
+
// Connection pool with all config servers except this one (might be an empty pool if there is only one config server)
private static ConnectionPool createConnectionPool(ConfigserverConfig configserverConfig) {
List<String> configServers = ConfigServerSpec.fromConfig(configserverConfig)
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java
index 8ec0c71d7f2..851ad166c2d 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java
@@ -202,6 +202,7 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener {
Thread.interrupted(); // Ignore and continue shutdown.
}
delayedConfigResponses.stop();
+ fileServer.close();
supervisor.transport().shutdown().join();
isRunning = false;
}
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDownloader.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDownloader.java
index 1a84e4895e8..24b3fcac3e3 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDownloader.java
+++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDownloader.java
@@ -142,4 +142,8 @@ public class FileDownloader {
public FileReferenceDownloader fileReferenceDownloader() {
return fileReferenceDownloader;
}
+
+ public void close() {
+ fileReferenceDownloader.close();
+ }
}
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java
index 985b9a0069e..66b86866c3e 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java
+++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java
@@ -20,6 +20,7 @@ import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -30,7 +31,6 @@ import java.util.logging.Logger;
*
* @author hmusum
*/
-// TODO: Handle shutdown of executors
public class FileReferenceDownloader {
private final static Logger log = Logger.getLogger(FileReferenceDownloader.class.getName());
@@ -194,7 +194,11 @@ public class FileReferenceDownloader {
return connectionPool;
}
- public Duration getDownloadTimeout() {
- return downloadTimeout;
+ public void close() {
+ try {
+ downloadExecutor.awaitTermination(1, TimeUnit.SECONDS);
+ } catch (InterruptedException e) {
+ Thread.interrupted(); // Ignore and continue shutdown.
+ }
}
}
diff --git a/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java b/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java
index cab3a490a13..d1d12cb07b7 100644
--- a/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java
+++ b/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java
@@ -15,6 +15,7 @@ import com.yahoo.vespa.config.Connection;
import com.yahoo.vespa.config.ConnectionPool;
import net.jpountz.xxhash.XXHash64;
import net.jpountz.xxhash.XXHashFactory;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -53,6 +54,11 @@ public class FileDownloaderTest {
}
}
+ @After
+ public void teardown() {
+ fileDownloader.close();
+ }
+
@Test
public void getFile() throws IOException {
File downloadDir = fileDownloader.downloadDirectory();