Skip to content

Commit 29b112d

Browse files
committed
close hikariDSPool when close console
1 parent 8777986 commit 29b112d

2 files changed

Lines changed: 12 additions & 2 deletions

File tree

src/main/kotlin/stageguard/sctimetable/PluginMain.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin
1414
import net.mamoe.mirai.event.GlobalEventChannel
1515
import net.mamoe.mirai.event.events.BotOnlineEvent
1616
import net.mamoe.mirai.utils.MiraiExperimentalApi
17-
import net.mamoe.mirai.utils.error
1817
import net.mamoe.mirai.utils.info
1918
import org.quartz.Scheduler
2019
import org.quartz.impl.StdSchedulerFactory
@@ -60,5 +59,6 @@ object PluginMain : KotlinPlugin(
6059

6160
override fun onDisable() {
6261
SuperCourseApiService.closeHttpClient()
62+
Database.close()
6363
}
6464
}

src/main/kotlin/stageguard/sctimetable/database/Database.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import net.mamoe.mirai.utils.error
1515
import net.mamoe.mirai.utils.info
1616
import net.mamoe.mirai.utils.verbose
1717
import net.mamoe.mirai.utils.warning
18+
import okhttp3.internal.closeQuietly
1819
import org.jetbrains.exposed.sql.*
1920
import org.jetbrains.exposed.sql.Database
2021
import org.jetbrains.exposed.sql.statements.StatementContext
@@ -34,6 +35,7 @@ object Database {
3435
}
3536

3637
private lateinit var db : Database
38+
private lateinit var hikariSource: HikariDataSource
3739
private var connectionStatus: ConnectionStatus = ConnectionStatus.DISCONNECTED
3840

3941
fun <T> query(block: (Transaction) -> T) : T? = if(connectionStatus == ConnectionStatus.DISCONNECTED) {
@@ -47,7 +49,9 @@ object Database {
4749
} else newSuspendedTransaction(context = Dispatchers.IO, db = db) { block(this) }
4850

4951
fun connect() {
50-
db = Database.connect(hikariDataSourceProvider())
52+
db = Database.connect(hikariDataSourceProvider().also {
53+
hikariSource = it
54+
})
5155
connectionStatus = ConnectionStatus.CONNECTED
5256
PluginMain.logger.info { "Database ${PluginConfig.database.table} is connected." }
5357
initDatabase()
@@ -65,6 +69,11 @@ object Database {
6569

6670
} }
6771

72+
fun close() {
73+
connectionStatus = ConnectionStatus.DISCONNECTED
74+
hikariSource.closeQuietly()
75+
}
76+
6877
private fun hikariDataSourceProvider() : HikariDataSource = HikariDataSource(HikariConfig().apply {
6978
when {
7079
PluginConfig.database.address == "" -> throw InvalidDatabaseConfigException("Database address is not set in config file ${PluginConfig.saveName}.")
@@ -84,6 +93,7 @@ object Database {
8493
username = PluginConfig.database.user
8594
password = PluginConfig.database.password
8695
maximumPoolSize = PluginConfig.database.maximumPoolSize!!
96+
poolName = "SCTimetableDB Pool"
8797
})
8898

8999
}

0 commit comments

Comments
 (0)