Skip to content

Commit 25f1c8d

Browse files
authored
KTOR-5359 Add engine shutdown configuration (#3324)
KTOR-5359 Add engine shutdown configuration
1 parent 0952f39 commit 25f1c8d

File tree

4 files changed

+29
-7
lines changed

4 files changed

+29
-7
lines changed

ktor-server/ktor-server-cio/jvmAndNix/src/io/ktor/server/cio/EngineMain.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,14 @@ public object EngineMain {
1919
public fun main(args: Array<String>) {
2020
val applicationEnvironment = commandLineEnvironment(args)
2121
val engine = CIOApplicationEngine(applicationEnvironment) { loadConfiguration(applicationEnvironment.config) }
22+
val gracePeriod =
23+
engine.environment.config.propertyOrNull("ktor.deployment.shutdownGracePeriod")?.getString()?.toLong()
24+
?: 50
25+
val timeout =
26+
engine.environment.config.propertyOrNull("ktor.deployment.shutdownTimeout")?.getString()?.toLong()
27+
?: 5000
2228
engine.addShutdownHook {
23-
engine.stop(50, 5000)
29+
engine.stop(gracePeriod, timeout)
2430
}
2531
engine.start(true)
2632
}

ktor-server/ktor-server-jetty/jvm/src/io/ktor/server/jetty/EngineMain.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package io.ktor.server.jetty
66

77
import io.ktor.server.config.*
88
import io.ktor.server.engine.*
9-
import java.util.concurrent.*
109

1110
/**
1211
* Jetty engine
@@ -20,8 +19,14 @@ public object EngineMain {
2019
public fun main(args: Array<String>) {
2120
val applicationEnvironment = commandLineEnvironment(args)
2221
val engine = JettyApplicationEngine(applicationEnvironment) { loadConfiguration(applicationEnvironment.config) }
22+
val gracePeriod =
23+
engine.environment.config.propertyOrNull("ktor.deployment.shutdownGracePeriod")?.getString()?.toLong()
24+
?: 3000
25+
val timeout =
26+
engine.environment.config.propertyOrNull("ktor.deployment.shutdownTimeout")?.getString()?.toLong()
27+
?: 5000
2328
engine.addShutdownHook {
24-
engine.stop(3, 5, TimeUnit.SECONDS)
29+
engine.stop(gracePeriod, timeout)
2530
}
2631
engine.start(true)
2732
}

ktor-server/ktor-server-netty/jvm/src/io/ktor/server/netty/EngineMain.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package io.ktor.server.netty
66

77
import io.ktor.server.config.*
88
import io.ktor.server.engine.*
9-
import java.util.concurrent.*
109

1110
/**
1211
* Netty engine
@@ -20,8 +19,15 @@ public object EngineMain {
2019
public fun main(args: Array<String>) {
2120
val applicationEnvironment = commandLineEnvironment(args)
2221
val engine = NettyApplicationEngine(applicationEnvironment) { loadConfiguration(applicationEnvironment.config) }
22+
23+
val gracePeriod =
24+
engine.environment.config.propertyOrNull("ktor.deployment.shutdownGracePeriod")?.getString()?.toLong()
25+
?: 3000
26+
val timeout =
27+
engine.environment.config.propertyOrNull("ktor.deployment.shutdownTimeout")?.getString()?.toLong()
28+
?: 5000
2329
engine.addShutdownHook {
24-
engine.stop(3, 5, TimeUnit.SECONDS)
30+
engine.stop(gracePeriod, timeout)
2531
}
2632
engine.start(true)
2733
}

ktor-server/ktor-server-tomcat/jvm/src/io/ktor/server/tomcat/EngineMain.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package io.ktor.server.tomcat
66

77
import io.ktor.server.config.*
88
import io.ktor.server.engine.*
9-
import java.util.concurrent.*
109

1110
/**
1211
* Tomcat engine
@@ -22,8 +21,14 @@ public object EngineMain {
2221
val engine = TomcatApplicationEngine(applicationEnvironment) {
2322
loadConfiguration(applicationEnvironment.config)
2423
}
24+
val gracePeriod =
25+
engine.environment.config.propertyOrNull("ktor.deployment.shutdownGracePeriod")?.getString()?.toLong()
26+
?: 3000
27+
val timeout =
28+
engine.environment.config.propertyOrNull("ktor.deployment.shutdownTimeout")?.getString()?.toLong()
29+
?: 5000
2530
engine.addShutdownHook {
26-
engine.stop(3, 5, TimeUnit.SECONDS)
31+
engine.stop(gracePeriod, timeout)
2732
}
2833
engine.start(true)
2934
}

0 commit comments

Comments
 (0)