diff options
author | Arne Juul <arnej@verizonmedia.com> | 2020-09-22 10:29:57 +0000 |
---|---|---|
committer | Arne Juul <arnej@verizonmedia.com> | 2020-09-22 10:29:57 +0000 |
commit | 0067c2a02f4c239d964a9ab925438bb4de791583 (patch) | |
tree | 4265bd8f10ce47e5b2da27bd4a0d12123529fc07 /config-proxy | |
parent | 804e8057c2eca61ec9bc8985430613e0731922a2 (diff) |
log more details on shutdown, add timeout
Diffstat (limited to 'config-proxy')
-rw-r--r-- | config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ProxyServer.java | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ProxyServer.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ProxyServer.java index 34510805aca..4635ab4fd86 100644 --- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ProxyServer.java +++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ProxyServer.java @@ -8,12 +8,19 @@ import com.yahoo.jrt.Transport; import java.util.logging.Level; import com.yahoo.log.LogSetup; import com.yahoo.log.event.Event; +import com.yahoo.concurrent.DaemonThreadFactory; import com.yahoo.vespa.config.RawConfig; import com.yahoo.vespa.config.protocol.JRTServerConfigRequest; import com.yahoo.vespa.config.proxy.filedistribution.FileDistributionAndUrlDownload; import com.yahoo.yolean.system.CatchSignals; import java.util.List; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicBoolean; import java.util.logging.Logger; @@ -28,6 +35,7 @@ import static com.yahoo.vespa.config.proxy.Mode.ModeName.DEFAULT; */ public class ProxyServer implements Runnable { + private static final DaemonThreadFactory threadFactory = new DaemonThreadFactory("ProxyServer"); private static final int DEFAULT_RPC_PORT = 19090; private static final int JRT_TRANSPORT_THREADS = 4; static final String DEFAULT_PROXY_CONFIG_SOURCES = "tcp/localhost:19070"; @@ -58,9 +66,8 @@ public class ProxyServer implements Runnable { @Override public void run() { if (rpcServer != null) { - Thread t = new Thread(rpcServer); + Thread t = threadFactory.newThread(rpcServer); t.setName("RpcServer"); - t.setDaemon(true); t.start(); } } @@ -125,7 +132,15 @@ public class ProxyServer implements Runnable { } } } - stop(); + ExecutorService executor = Executors.newSingleThreadExecutor(threadFactory); + Callable<String> stopper = () -> { stop(); return "clean shutdown"; }; + Future<String> future = executor.submit(stopper); + try { + String result = future.get(5, TimeUnit.SECONDS); + Event.stopping("configproxy", result); + } catch (Exception e) { + System.exit(1); + } System.exit(0); } @@ -146,9 +161,8 @@ public class ProxyServer implements Runnable { ProxyServer proxyServer = new ProxyServer(new Spec(null, port), configSources, new MemoryCache(), null); // catch termination and interrupt signal proxyServer.setupSignalHandler(); - Thread proxyserverThread = new Thread(proxyServer); + Thread proxyserverThread = threadFactory.newThread(proxyServer); proxyserverThread.setName("configproxy"); - proxyserverThread.setDaemon(true); proxyserverThread.start(); proxyServer.waitForShutdown(); } @@ -174,11 +188,15 @@ public class ProxyServer implements Runnable { } void stop() { - Event.stopping("configproxy", "shutdown"); + Event.stopping("configproxy", "shutdown rpcServer"); if (rpcServer != null) rpcServer.shutdown(); + Event.stopping("configproxy", "cancel configClient"); if (configClient != null) configClient.cancel(); + Event.stopping("configproxy", "flush"); flush(); + Event.stopping("configproxy", "close fileDistribution"); fileDistributionAndUrlDownload.close(); + Event.stopping("configproxy", "stop complete"); } MemoryCache getMemoryCache() { |