diff options
author | Bjørn Christian Seime <bjorn.christian@seime.no> | 2019-03-13 17:59:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-13 17:59:10 +0100 |
commit | 820a730d7efede2a84133170639d624f7939e358 (patch) | |
tree | aa2c84adabbec3cfe543734cc8e98c9cc3aa913b /jdisc_http_service/src | |
parent | cbd512e52fadbb4c0135550ef057c2cb27540977 (diff) | |
parent | 2cc608cc44522d046f0609899cd39ccf6a96b251 (diff) |
Merge pull request #8778 from vespa-engine/bjorncs/jetty-graceful-shutdown
Bjorncs/jetty graceful shutdown
Diffstat (limited to 'jdisc_http_service/src')
4 files changed, 10 insertions, 5 deletions
diff --git a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactory.java b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactory.java index 5d3550db9d2..c9586530734 100644 --- a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactory.java +++ b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactory.java @@ -48,7 +48,6 @@ public class ConnectorFactory { connector.setAcceptQueueSize(connectorConfig.acceptQueueSize()); connector.setReuseAddress(connectorConfig.reuseAddress()); connector.setIdleTimeout((long)(connectorConfig.idleTimeout() * 1000.0)); - connector.setStopTimeout((long)(connectorConfig.stopTimeout() * 1000.0)); return connector; } diff --git a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java index 07d3d77dff2..0dbc5f59f67 100644 --- a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java +++ b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java @@ -40,7 +40,6 @@ import org.osgi.framework.ServiceReference; import javax.management.remote.JMXServiceURL; import javax.servlet.DispatcherType; - import java.io.IOException; import java.lang.management.ManagementFactory; import java.net.BindException; @@ -141,6 +140,7 @@ public class JettyHttpServer extends AbstractServerProvider { initializeJettyLogging(); server = new Server(); + server.setStopTimeout((long)(serverConfig.stopTimeout() * 1000.0)); server.setRequestLog(new AccessLogRequestLog(accessLog)); setupJmx(server, serverConfig); ((QueuedThreadPool)server.getThreadPool()).setMaxThreads(serverConfig.maxWorkerThreads()); @@ -307,7 +307,9 @@ public class JettyHttpServer extends AbstractServerProvider { @Override public void close() { try { + log.log(Level.INFO, String.format("Shutting down server (graceful=%b, timeout=%.1fs)", isGracefulShutdownEnabled(), server.getStopTimeout()/1000d)); server.stop(); + log.log(Level.INFO, "Server shutdown completed"); } catch (final Exception e) { log.log(Level.SEVERE, "Server shutdown threw an unexpected exception.", e); } @@ -316,6 +318,10 @@ public class JettyHttpServer extends AbstractServerProvider { janitor.shutdown(); } + private boolean isGracefulShutdownEnabled() { + return server.getChildHandlersByClass(StatisticsHandler.class).length > 0 && server.getStopTimeout() > 0; + } + public int getListenPort() { return ((ServerConnector)server.getConnectors()[0]).getLocalPort(); } diff --git a/jdisc_http_service/src/main/resources/configdefinitions/jdisc.http.connector.def b/jdisc_http_service/src/main/resources/configdefinitions/jdisc.http.connector.def index 30c74ed2c35..5d9b9d2cc0d 100644 --- a/jdisc_http_service/src/main/resources/configdefinitions/jdisc.http.connector.def +++ b/jdisc_http_service/src/main/resources/configdefinitions/jdisc.http.connector.def @@ -28,9 +28,6 @@ reuseAddress bool default=true # The maximum idle time for a connection, which roughly translates to the Socket.setSoTimeout(int). idleTimeout double default=180.0 -# The stop timeout. -stopTimeout double default=30.0 - # Whether or not to have socket keep alive turned on. tcpKeepAliveEnabled bool default=false diff --git a/jdisc_http_service/src/main/resources/configdefinitions/jdisc.http.server.def b/jdisc_http_service/src/main/resources/configdefinitions/jdisc.http.server.def index a6cb43cee17..0836a080e1f 100644 --- a/jdisc_http_service/src/main/resources/configdefinitions/jdisc.http.server.def +++ b/jdisc_http_service/src/main/resources/configdefinitions/jdisc.http.server.def @@ -27,6 +27,9 @@ filter[].binding string # Max number of threads in pool maxWorkerThreads int default = 200 +# Stop timeout in seconds. The maximum allowed time to process in-flight requests during server shutdown. Setting it to 0 disable graceful shutdown. +stopTimeout double default = 30.0 + # Enable embedded JMX server. Note: only accessible through the loopback interface. jmx.enabled bool default = false |