diff --git a/ktor-server/ktor-server-cio/jvmAndNix/src/io/ktor/server/cio/EngineMain.kt b/ktor-server/ktor-server-cio/jvmAndNix/src/io/ktor/server/cio/EngineMain.kt index fb6155f4e9b..a2f96e866ca 100644 --- a/ktor-server/ktor-server-cio/jvmAndNix/src/io/ktor/server/cio/EngineMain.kt +++ b/ktor-server/ktor-server-cio/jvmAndNix/src/io/ktor/server/cio/EngineMain.kt @@ -19,8 +19,14 @@ public object EngineMain { public fun main(args: Array) { val applicationEnvironment = commandLineEnvironment(args) val engine = CIOApplicationEngine(applicationEnvironment) { loadConfiguration(applicationEnvironment.config) } + val gracePeriod = + engine.environment.config.propertyOrNull("ktor.deployment.shutdownGracePeriod")?.getString()?.toLong() + ?: 50 + val timeout = + engine.environment.config.propertyOrNull("ktor.deployment.shutdownTimeout")?.getString()?.toLong() + ?: 5000 engine.addShutdownHook { - engine.stop(50, 5000) + engine.stop(gracePeriod, timeout) } engine.start(true) } diff --git a/ktor-server/ktor-server-jetty/jvm/src/io/ktor/server/jetty/EngineMain.kt b/ktor-server/ktor-server-jetty/jvm/src/io/ktor/server/jetty/EngineMain.kt index 71bb4441566..99e5c1e9ac7 100644 --- a/ktor-server/ktor-server-jetty/jvm/src/io/ktor/server/jetty/EngineMain.kt +++ b/ktor-server/ktor-server-jetty/jvm/src/io/ktor/server/jetty/EngineMain.kt @@ -6,7 +6,6 @@ package io.ktor.server.jetty import io.ktor.server.config.* import io.ktor.server.engine.* -import java.util.concurrent.* /** * Jetty engine @@ -20,8 +19,14 @@ public object EngineMain { public fun main(args: Array) { val applicationEnvironment = commandLineEnvironment(args) val engine = JettyApplicationEngine(applicationEnvironment) { loadConfiguration(applicationEnvironment.config) } + val gracePeriod = + engine.environment.config.propertyOrNull("ktor.deployment.shutdownGracePeriod")?.getString()?.toLong() + ?: 3000 + val timeout = + engine.environment.config.propertyOrNull("ktor.deployment.shutdownTimeout")?.getString()?.toLong() + ?: 5000 engine.addShutdownHook { - engine.stop(3, 5, TimeUnit.SECONDS) + engine.stop(gracePeriod, timeout) } engine.start(true) } diff --git a/ktor-server/ktor-server-netty/jvm/src/io/ktor/server/netty/EngineMain.kt b/ktor-server/ktor-server-netty/jvm/src/io/ktor/server/netty/EngineMain.kt index 1a2b28a768f..65e675149fc 100644 --- a/ktor-server/ktor-server-netty/jvm/src/io/ktor/server/netty/EngineMain.kt +++ b/ktor-server/ktor-server-netty/jvm/src/io/ktor/server/netty/EngineMain.kt @@ -6,7 +6,6 @@ package io.ktor.server.netty import io.ktor.server.config.* import io.ktor.server.engine.* -import java.util.concurrent.* /** * Netty engine @@ -20,8 +19,15 @@ public object EngineMain { public fun main(args: Array) { val applicationEnvironment = commandLineEnvironment(args) val engine = NettyApplicationEngine(applicationEnvironment) { loadConfiguration(applicationEnvironment.config) } + + val gracePeriod = + engine.environment.config.propertyOrNull("ktor.deployment.shutdownGracePeriod")?.getString()?.toLong() + ?: 3000 + val timeout = + engine.environment.config.propertyOrNull("ktor.deployment.shutdownTimeout")?.getString()?.toLong() + ?: 5000 engine.addShutdownHook { - engine.stop(3, 5, TimeUnit.SECONDS) + engine.stop(gracePeriod, timeout) } engine.start(true) } diff --git a/ktor-server/ktor-server-tomcat/jvm/src/io/ktor/server/tomcat/EngineMain.kt b/ktor-server/ktor-server-tomcat/jvm/src/io/ktor/server/tomcat/EngineMain.kt index 22084a5fbfb..4cbc72d1afd 100644 --- a/ktor-server/ktor-server-tomcat/jvm/src/io/ktor/server/tomcat/EngineMain.kt +++ b/ktor-server/ktor-server-tomcat/jvm/src/io/ktor/server/tomcat/EngineMain.kt @@ -6,7 +6,6 @@ package io.ktor.server.tomcat import io.ktor.server.config.* import io.ktor.server.engine.* -import java.util.concurrent.* /** * Tomcat engine @@ -22,8 +21,14 @@ public object EngineMain { val engine = TomcatApplicationEngine(applicationEnvironment) { loadConfiguration(applicationEnvironment.config) } + val gracePeriod = + engine.environment.config.propertyOrNull("ktor.deployment.shutdownGracePeriod")?.getString()?.toLong() + ?: 3000 + val timeout = + engine.environment.config.propertyOrNull("ktor.deployment.shutdownTimeout")?.getString()?.toLong() + ?: 5000 engine.addShutdownHook { - engine.stop(3, 5, TimeUnit.SECONDS) + engine.stop(gracePeriod, timeout) } engine.start(true) }