Add config to set connection pool checkout timeout

This commit is contained in:
syeopite 2024-11-11 16:26:58 -08:00
parent 347273dbc2
commit ef07f786f2
No known key found for this signature in database
GPG Key ID: A73C186DA3955A1A
4 changed files with 24 additions and 5 deletions

View File

@ -216,7 +216,7 @@ https_only: false
##
## Idle size of the HTTP pool used to connect to youtube. Each
## Max idle size of the HTTP pool used to connect to youtube. Each
## domain ('youtube.com', 'ytimg.com', ...) has its own pool.
##
## When unset this value has the same value as pool_size
@ -224,8 +224,17 @@ https_only: false
## Accepted values: a positive integer
## Default: <none> (internally this means that it has the same value as pool_size)
##
#idle pool_size: 100
#idle_pool_size: 100
##
## Amount of seconds to wait for a client to be free from the pool
## before raising an error
##
##
## Accepted values: a positive integer
## Default: 5
##
#pool_checkout_timeout: 5
##

View File

@ -92,14 +92,20 @@ SOFTWARE = {
"branch" => "#{CURRENT_BRANCH}",
}
YT_POOL = Invidious::ConnectionPool::Pool.new(YT_URL, max_capacity: CONFIG.pool_size, idle_capacity: CONFIG.idle_pool_size)
YT_POOL = Invidious::ConnectionPool::Pool.new(
YT_URL,
max_capacity: CONFIG.pool_size,
idle_capacity: CONFIG.idle_pool_size,
timeout: CONFIG.pool_checkout_timeout
)
# Image request pool
GGPHT_POOL = Invidious::ConnectionPool::Pool.new(
URI.parse("https://yt3.ggpht.com"),
max_capacity: CONFIG.pool_size,
idle_capacity: CONFIG.idle_pool_size
idle_capacity: CONFIG.idle_pool_size,
timeout: CONFIG.pool_checkout_timeout
)
COMPANION_POOL = Invidious::ConnectionPool::CompanionPool.new(

View File

@ -163,6 +163,9 @@ class Config
# Idle pool size for HTTP requests to youtube.com and ytimg.com (each domain has a separate pool)
property idle_pool_size : Int32? = nil
# Amount of seconds to wait for a client to be free from the pool before rasing an error
property pool_checkout_timeout : Int32 = 5
# HTTP Proxy configuration
property http_proxy : HTTPProxyConfig? = nil

View File

@ -128,7 +128,8 @@ module Invidious::ConnectionPool
pool = Invidious::ConnectionPool::Pool.new(
URI.parse("https://#{subdomain}.ytimg.com"),
max_capacity: CONFIG.pool_size,
idle_capacity: CONFIG.idle_pool_size
idle_capacity: CONFIG.idle_pool_size,
timeout: CONFIG.pool_checkout_timeout
)
YTIMG_POOLS[subdomain] = pool