Skip to content

Commit 0dd4d97

Browse files
committed
[FIX] Try fix okhttp clien close
1 parent d43ac79 commit 0dd4d97

4 files changed

Lines changed: 10 additions & 5 deletions

File tree

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ klibs.java.ktarget=21
1313
# Project
1414
klibs.project.name=MessageBridge
1515
klibs.project.group=ru.astrainteractive.messagebridge
16-
klibs.project.version.string=0.24.1
16+
klibs.project.version.string=0.24.2
1717
klibs.project.description=Bridge for TG and Discord
1818
klibs.project.developers=makeevrserg|Makeev Roman|makeevrserg@gmail.com
1919
klibs.project.url=https://empireprojekt.ru

modules/messenger/discord/src/main/kotlin/ru/astrainteractive/messagebridge/messenger/discord/di/JdaMessengerModule.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import kotlinx.coroutines.flow.onEach
2121
import kotlinx.coroutines.flow.retryWhen
2222
import kotlinx.coroutines.flow.shareIn
2323
import kotlinx.coroutines.launch
24+
import kotlinx.coroutines.runInterruptible
2425
import net.dv8tion.jda.api.JDABuilder
2526
import net.dv8tion.jda.api.entities.Activity
2627
import net.dv8tion.jda.api.requests.GatewayIntent
@@ -118,7 +119,7 @@ class JdaMessengerModule(
118119
}
119120
}
120121

121-
val jda = builder.build().awaitReady()
122+
val jda = runInterruptible { builder.build().awaitReady() }
122123
send(jda)
123124

124125
awaitClose {
@@ -140,7 +141,7 @@ class JdaMessengerModule(
140141
flow2 = coreModule.configKrate.cachedStateFlow.map { it.jdaConfig.channelId },
141142
transform = { jda, channelId ->
142143
callbackFlow {
143-
val webhookClient = WebHookClientFactory(jda).create(channelId).first()
144+
val webhookClient = runInterruptible { WebHookClientFactory(jda).create(channelId) }.first()
144145
send(webhookClient)
145146
awaitClose {
146147
webhookClient.close()

modules/messenger/forge/src/main/kotlin/ru/astrainteractive/messagebridge/messenger/forge/event/ForgeEvents.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import net.minecraftforge.event.entity.living.LivingDeathEvent
1111
import net.minecraftforge.event.entity.player.PlayerEvent
1212
import net.minecraftforge.event.server.ServerStartedEvent
1313
import net.minecraftforge.event.server.ServerStoppingEvent
14+
import net.minecraftforge.eventbus.api.EventPriority
1415
import ru.astrainteractive.astralibs.event.flowEvent
1516
import ru.astrainteractive.astralibs.server.util.toPlain
1617
import ru.astrainteractive.klibs.kstorage.api.CachedKrate
@@ -93,7 +94,7 @@ class ForgeEvents(
9394
}
9495
}.launchIn(ioScope)
9596

96-
val serverChatEvent = flowEvent<ServerChatEvent>()
97+
val serverChatEvent = flowEvent<ServerChatEvent>(EventPriority.HIGHEST)
9798
.onEach { info { "#serverChatEvent" } }
9899
.onEach { event ->
99100
ioScope.launch(dispatchers.IO) {

modules/messenger/telegram/src/main/kotlin/ru/astrainteractive/messagebridge/messenger/telegram/di/TelegramMessengerModule.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import kotlinx.coroutines.flow.distinctUntilChanged
1111
import kotlinx.coroutines.flow.flatMapLatest
1212
import kotlinx.coroutines.flow.map
1313
import kotlinx.coroutines.flow.shareIn
14+
import kotlinx.coroutines.runInterruptible
1415
import okhttp3.Credentials
1516
import okhttp3.OkHttpClient
1617
import org.telegram.telegrambots.client.okhttp.OkHttpTelegramClient
@@ -71,6 +72,7 @@ class TelegramMessengerModule(
7172
send(okHttpClient)
7273

7374
awaitClose {
75+
okHttpClient.dispatcher.cancelAll()
7476
okHttpClient.dispatcher.executorService.shutdown()
7577
okHttpClient.connectionPool.evictAll()
7678
okHttpClient.cache?.close()
@@ -143,14 +145,15 @@ class TelegramMessengerModule(
143145
Supplier { okHttpClient }
144146
)
145147
try {
146-
tgLpApplication.registerBot(tgConfig.token, consumer)
148+
runInterruptible { tgLpApplication.registerBot(tgConfig.token, consumer) }
147149
info { "#bridgeBotFlow loaded!" }
148150
send(tgLpApplication)
149151
} catch (e: TelegramApiErrorResponseException) {
150152
info { "#bridgeBotFlow could not load event. Error ${e.message}" }
151153
}
152154
awaitClose {
153155
info { "#bridgeBotFlow closing TelegramBotsLongPollingApplication..." }
156+
okHttpClient.dispatcher.cancelAll()
154157
tgLpApplication.unregisterBot(tgConfig.token)
155158
tgLpApplication.stop()
156159
tgLpApplication.close()

0 commit comments

Comments
 (0)