commit 6c18f9883978b7890a61b3c3fdd1599615d8d765
parent ead9e7830bd741e7b6321eac07ee4bc8eb76a94f
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date: Fri, 27 Oct 2023 03:23:31 +0200
fix(bridge/messagelogger): database connection leak
Diffstat:
1 file changed, 23 insertions(+), 10 deletions(-)
diff --git a/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/wrapper/MessageLoggerWrapper.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/wrapper/MessageLoggerWrapper.kt
@@ -10,18 +10,31 @@ import java.util.UUID
class MessageLoggerWrapper(
private val databaseFile: File
): MessageLoggerInterface.Stub() {
- private lateinit var database: SQLiteDatabase
+ private var _database: SQLiteDatabase? = null
+
+ private val database get() = synchronized(this) {
+ _database?.takeIf { it.isOpen } ?: run {
+ _database?.close()
+ val openedDatabase = SQLiteDatabase.openDatabase(databaseFile.absolutePath, null, SQLiteDatabase.CREATE_IF_NECESSARY or SQLiteDatabase.OPEN_READWRITE)
+ SQLiteDatabaseHelper.createTablesFromSchema(openedDatabase, mapOf(
+ "messages" to listOf(
+ "id INTEGER PRIMARY KEY",
+ "conversation_id VARCHAR",
+ "message_id BIGINT",
+ "message_data BLOB"
+ )
+ ))
+ _database = openedDatabase
+ openedDatabase
+ }
+ }
+
+ protected fun finalize() {
+ _database?.close()
+ }
fun init() {
- database = SQLiteDatabase.openDatabase(databaseFile.absolutePath, null, SQLiteDatabase.CREATE_IF_NECESSARY or SQLiteDatabase.OPEN_READWRITE)
- SQLiteDatabaseHelper.createTablesFromSchema(database, mapOf(
- "messages" to listOf(
- "id INTEGER PRIMARY KEY",
- "conversation_id VARCHAR",
- "message_id BIGINT",
- "message_data BLOB"
- )
- ))
+
}
override fun getLoggedIds(conversationId: Array<String>, limit: Int): LongArray {