Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make Jetty server stop timeout configurable #6058

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/configuration/settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,7 @@ You can configure the Kyuubi properties in `$KYUUBI_HOME/conf/kyuubi-defaults.co
| kyuubi.frontend.proxy.http.client.ip.header | X-Real-IP | The HTTP header to record the real client IP address. If your server is behind a load balancer or other proxy, the server will see this load balancer or proxy IP address as the client IP address, to get around this common issue, most load balancers or proxies offer the ability to record the real remote IP address in an HTTP header that will be added to the request for other devices to use. Note that, because the header value can be specified to any IP address, so it will not be used for authentication. | string | 1.6.0 |
| kyuubi.frontend.rest.bind.host | <undefined> | Hostname or IP of the machine on which to run the REST frontend service. | string | 1.4.0 |
| kyuubi.frontend.rest.bind.port | 10099 | Port of the machine on which to run the REST frontend service. | int | 1.4.0 |
| kyuubi.frontend.rest.jetty.stopTimeout | PT5S | Stop timeout for Jetty server used by the RESTful frontend service. | duration | 1.8.1 |
| kyuubi.frontend.rest.max.worker.threads | 999 | Maximum number of threads in the frontend worker thread pool for the rest frontend service | int | 1.6.2 |
| kyuubi.frontend.ssl.keystore.algorithm | <undefined> | SSL certificate keystore algorithm. | string | 1.7.0 |
| kyuubi.frontend.ssl.keystore.password | <undefined> | SSL certificate keystore password. | string | 1.7.0 |
Expand Down Expand Up @@ -284,6 +285,7 @@ You can configure the Kyuubi properties in `$KYUUBI_HOME/conf/kyuubi-defaults.co
| kyuubi.frontend.thrift.worker.keepalive.time | PT1M | Keep-alive time (in milliseconds) for an idle worker thread | duration | 1.4.0 |
| kyuubi.frontend.trino.bind.host | <undefined> | Hostname or IP of the machine on which to run the TRINO frontend service. | string | 1.7.0 |
| kyuubi.frontend.trino.bind.port | 10999 | Port of the machine on which to run the TRINO frontend service. | int | 1.7.0 |
| kyuubi.frontend.trino.jetty.stopTimeout | PT5S | Stop timeout for Jetty server used by the Trino frontend service. | duration | 1.8.1 |
| kyuubi.frontend.trino.max.worker.threads | 999 | Maximum number of threads in the frontend worker thread pool for the Trino frontend service | int | 1.7.0 |
| kyuubi.frontend.worker.keepalive.time | PT1M | (deprecated) Keep-alive time (in milliseconds) for an idle worker thread | duration | 1.0.0 |

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -571,6 +571,13 @@ object KyuubiConf {
.version("1.6.2")
.fallbackConf(FRONTEND_MAX_WORKER_THREADS)

val FRONTEND_REST_JETTY_STOP_TIMEOUT: ConfigEntry[Long] =
buildConf("kyuubi.frontend.rest.jetty.stopTimeout")
.doc("Stop timeout for Jetty server used by the RESTful frontend service.")
.version("1.8.1")
.timeConf
.createWithDefaultString("PT5S")

val FRONTEND_WORKER_KEEPALIVE_TIME: ConfigEntry[Long] =
buildConf("kyuubi.frontend.worker.keepalive.time")
.doc("(deprecated) Keep-alive time (in milliseconds) for an idle worker thread")
Expand Down Expand Up @@ -1124,6 +1131,13 @@ object KyuubiConf {
.version("1.7.0")
.fallbackConf(FRONTEND_MAX_WORKER_THREADS)

val FRONTEND_TRINO_JETTY_STOP_TIMEOUT: ConfigEntry[Long] =
buildConf("kyuubi.frontend.trino.jetty.stopTimeout")
.doc("Stop timeout for Jetty server used by the Trino frontend service.")
.version("1.8.1")
.timeConf
.createWithDefaultString("PT5S")

val KUBERNETES_CONTEXT: OptionalConfigEntry[String] =
buildConf("kyuubi.kubernetes.context")
.doc("The desired context from your kubernetes config file used to configure the K8s " +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,8 @@ class KyuubiRestFrontendService(override val serverable: Serverable)
getName,
host,
port,
conf.get(FRONTEND_REST_MAX_WORKER_THREADS))
conf.get(FRONTEND_REST_MAX_WORKER_THREADS),
conf.get(FRONTEND_REST_JETTY_STOP_TIMEOUT))
super.initialize(conf)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import java.util.concurrent.atomic.AtomicBoolean

import org.apache.kyuubi.{KyuubiException, Utils}
import org.apache.kyuubi.config.KyuubiConf
import org.apache.kyuubi.config.KyuubiConf.{FRONTEND_ADVERTISED_HOST, FRONTEND_TRINO_BIND_HOST, FRONTEND_TRINO_BIND_PORT, FRONTEND_TRINO_MAX_WORKER_THREADS}
import org.apache.kyuubi.config.KyuubiConf.{FRONTEND_ADVERTISED_HOST, FRONTEND_TRINO_BIND_HOST, FRONTEND_TRINO_BIND_PORT, FRONTEND_TRINO_JETTY_STOP_TIMEOUT, FRONTEND_TRINO_MAX_WORKER_THREADS}
import org.apache.kyuubi.server.trino.api.v1.ApiRootResource
import org.apache.kyuubi.server.ui.JettyServer
import org.apache.kyuubi.service.{AbstractFrontendService, Serverable, Service}
Expand Down Expand Up @@ -54,7 +54,8 @@ class KyuubiTrinoFrontendService(override val serverable: Serverable)
getName,
host,
port,
conf.get(FRONTEND_TRINO_MAX_WORKER_THREADS))
conf.get(FRONTEND_TRINO_MAX_WORKER_THREADS),
conf.get(FRONTEND_TRINO_JETTY_STOP_TIMEOUT))
super.initialize(conf)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,17 @@ private[kyuubi] case class JettyServer(

object JettyServer {

def apply(name: String, host: String, port: Int, poolSize: Int): JettyServer = {
def apply(
name: String,
host: String,
port: Int,
poolSize: Int,
stopTimeout: Long): JettyServer = {
val pool = new QueuedThreadPool(poolSize)
pool.setName(name)
pool.setDaemon(true)
val server = new Server(pool)
server.setStopTimeout(stopTimeout)

val errorHandler = new ErrorHandler()
errorHandler.setShowStacks(true)
Expand Down
Loading