From 22838cc8d9c5a3a0274090bf487d3c35260a9450 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?To=CF=80?= Date: Sat, 1 Feb 2025 17:45:29 +0100 Subject: [PATCH] feat: allow overriding default request timeouts (#1117) * feat: allow overriding default request timeouts * update lavaplayer to 2.2.3 --- LavalinkServer/application.yml.example | 4 +++ .../server/config/AudioPlayerConfiguration.kt | 5 ++++ .../lavalink/server/config/ServerConfig.kt | 7 +++++ build.gradle.kts | 1 + settings.gradle.kts | 26 +++++++++---------- 5 files changed, 30 insertions(+), 13 deletions(-) diff --git a/LavalinkServer/application.yml.example b/LavalinkServer/application.yml.example index 3badfaf47..1b3581105 100644 --- a/LavalinkServer/application.yml.example +++ b/LavalinkServer/application.yml.example @@ -64,6 +64,10 @@ lavalink: #proxyPort: 3128 # Proxy port, 3128 is the default for squidProxy #proxyUser: "" # Optional user for basic authentication fields, leave blank if you don't use basic auth #proxyPassword: "" # Password for basic authentication + timeouts: + connectTimeoutMs: 3000 + connectionRequestTimeoutMs: 3000 + socketTimeoutMs: 3000 metrics: prometheus: diff --git a/LavalinkServer/src/main/java/lavalink/server/config/AudioPlayerConfiguration.kt b/LavalinkServer/src/main/java/lavalink/server/config/AudioPlayerConfiguration.kt index 96571e689..876eff99e 100644 --- a/LavalinkServer/src/main/java/lavalink/server/config/AudioPlayerConfiguration.kt +++ b/LavalinkServer/src/main/java/lavalink/server/config/AudioPlayerConfiguration.kt @@ -14,6 +14,7 @@ import com.sedmelluq.discord.lavaplayer.source.soundcloud.* import com.sedmelluq.discord.lavaplayer.source.twitch.TwitchStreamAudioSourceManager import com.sedmelluq.discord.lavaplayer.source.vimeo.VimeoAudioSourceManager import com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager +import com.sedmelluq.discord.lavaplayer.tools.io.HttpClientTools import com.sedmelluq.discord.lavaplayer.track.playback.NonAllocatingAudioFrameBuffer import com.sedmelluq.lava.extensions.youtuberotator.YoutubeIpRotatorSetup import com.sedmelluq.lava.extensions.youtuberotator.planner.* @@ -50,6 +51,10 @@ class AudioPlayerConfiguration { audioPlayerManagerConfigurations: Collection, mediaContainerProbes: Collection ): AudioPlayerManager { + serverConfig.timeouts?.let { + HttpClientTools.setDefaultRequestTimeout(it.connectTimeoutMs, it.connectionRequestTimeoutMs, it.socketTimeoutMs) + } + val audioPlayerManager = DefaultAudioPlayerManager() if (serverConfig.isGcWarnings) { diff --git a/LavalinkServer/src/main/java/lavalink/server/config/ServerConfig.kt b/LavalinkServer/src/main/java/lavalink/server/config/ServerConfig.kt index da31f3251..209c0f6a7 100644 --- a/LavalinkServer/src/main/java/lavalink/server/config/ServerConfig.kt +++ b/LavalinkServer/src/main/java/lavalink/server/config/ServerConfig.kt @@ -46,4 +46,11 @@ class ServerConfig { var youtubeConfig: YoutubeConfig? = null var httpConfig: HttpConfig? = null var filters: Map = mapOf() + var timeouts: TimeoutsConfig? = null +} + +class TimeoutsConfig { + var connectTimeoutMs: Int = 3000 + var connectionRequestTimeoutMs: Int = 3000 + var socketTimeoutMs: Int = 3000 } diff --git a/build.gradle.kts b/build.gradle.kts index 1bb71a69f..9ecfe5d8a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -26,6 +26,7 @@ allprojects { mavenLocal() // useful for developing maven("https://m2.dv8tion.net/releases") maven("https://maven.lavalink.dev/releases") + maven("https://maven.lavalink.dev/snapshots") jcenter() maven("https://jitpack.io") // build projects directly from GitHub } diff --git a/settings.gradle.kts b/settings.gradle.kts index 0a09abe54..ded369bb6 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -25,23 +25,23 @@ fun VersionCatalogBuilder.spring() { library("spring-websocket", "org.springframework", "spring-websocket").version("6.1.9") - library("spring-boot", "org.springframework.boot", "spring-boot").versionRef("spring-boot") - library("spring-boot-web", "org.springframework.boot", "spring-boot-starter-web").versionRef("spring-boot") - library("spring-boot-undertow", "org.springframework.boot", "spring-boot-starter-undertow") .versionRef("spring-boot") - library("spring-boot-test", "org.springframework.boot", "spring-boot-starter-test") .versionRef("spring-boot") + library("spring-boot", "org.springframework.boot", "spring-boot").versionRef("spring-boot") + library("spring-boot-web", "org.springframework.boot", "spring-boot-starter-web").versionRef("spring-boot") + library("spring-boot-undertow", "org.springframework.boot", "spring-boot-starter-undertow").versionRef("spring-boot") + library("spring-boot-test", "org.springframework.boot", "spring-boot-starter-test").versionRef("spring-boot") bundle("spring", listOf("spring-websocket", "spring-boot-web", "spring-boot-undertow")) } fun VersionCatalogBuilder.voice() { - version("lavaplayer", "2.2.2") + version("lavaplayer", "2.2.3") version("koe", "2.0.3-rc2") - library("lavaplayer", "dev.arbjerg", "lavaplayer").versionRef("lavaplayer") + library("lavaplayer", "dev.arbjerg", "lavaplayer").versionRef("lavaplayer") library("lavaplayer-ip-rotator", "dev.arbjerg", "lavaplayer-ext-youtube-rotator").versionRef("lavaplayer") - library("lavadsp", "dev.arbjerg", "lavadsp").version("0.7.8") + library("lavadsp", "dev.arbjerg", "lavadsp").version("0.7.8") - library("koe", "moe.kyokobot.koe", "core").versionRef("koe") + library("koe", "moe.kyokobot.koe", "core").versionRef("koe") library("koe-udpqueue", "moe.kyokobot.koe", "ext-udpqueue").versionRef("koe") version("udpqueue", "0.2.7") @@ -56,7 +56,7 @@ fun VersionCatalogBuilder.voice() { fun VersionCatalogBuilder.metrics() { version("prometheus", "0.16.0") - library("metrics", "io.prometheus", "simpleclient").versionRef("prometheus") + library("metrics", "io.prometheus", "simpleclient").versionRef("prometheus") library("metrics-hotspot", "io.prometheus", "simpleclient_hotspot").versionRef("prometheus") library("metrics-logback", "io.prometheus", "simpleclient_logback").versionRef("prometheus") library("metrics-servlet", "io.prometheus", "simpleclient_servlet").versionRef("prometheus") @@ -67,7 +67,7 @@ fun VersionCatalogBuilder.metrics() { fun VersionCatalogBuilder.common() { version("kotlin", "2.0.0") - library("kotlin-reflect", "org.jetbrains.kotlin", "kotlin-reflect").versionRef("kotlin") + library("kotlin-reflect", "org.jetbrains.kotlin", "kotlin-reflect").versionRef("kotlin") library("kotlin-stdlib-jdk8", "org.jetbrains.kotlin", "kotlin-stdlib-jdk8").versionRef("kotlin") library("kotlinx-serialization-json", "org.jetbrains.kotlinx", "kotlinx-serialization-json").version("1.7.0") @@ -76,9 +76,9 @@ fun VersionCatalogBuilder.common() { library("xmlutil-jdk", "io.github.pdvrieze.xmlutil", "core-jdk").version("0.90.3") library("xmlutil-serialization", "io.github.pdvrieze.xmlutil", "serialization-jvm").version("0.90.3") - library("logback", "ch.qos.logback", "logback-classic").version("1.5.6") - library("sentry-logback", "io.sentry", "sentry-logback").version("7.10.0") - library("oshi", "com.github.oshi", "oshi-core").version("6.4.11") + library("logback", "ch.qos.logback", "logback-classic").version("1.5.6") + library("sentry-logback", "io.sentry", "sentry-logback").version("7.10.0") + library("oshi", "com.github.oshi", "oshi-core").version("6.4.11") } fun VersionCatalogBuilder.other() {