From 9c7dc226518b8f10a6e5a57eaccb1b2d27d7e193 Mon Sep 17 00:00:00 2001 From: Callum Stott Date: Mon, 20 Jul 2026 12:03:31 +0100 Subject: [PATCH] Synchronize mutations to DB connections --- .../collect/db/sqlite/DatabaseConnection.kt | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/db/src/main/java/org/odk/collect/db/sqlite/DatabaseConnection.kt b/db/src/main/java/org/odk/collect/db/sqlite/DatabaseConnection.kt index fde416644bd..9fcbe018033 100644 --- a/db/src/main/java/org/odk/collect/db/sqlite/DatabaseConnection.kt +++ b/db/src/main/java/org/odk/collect/db/sqlite/DatabaseConnection.kt @@ -109,27 +109,31 @@ open class DatabaseConnection @JvmOverloads constructor( @JvmStatic fun cleanUp() { - val openHelpersToClear = mutableListOf() + synchronized(openHelpers) { + val openHelpersToClear = mutableListOf() - openHelpers.forEach { (databasePath, openHelper) -> - if (!File(databasePath).exists()) { - openHelper.close() - openHelpersToClear.add(databasePath) + openHelpers.forEach { (databasePath, openHelper) -> + if (!File(databasePath).exists()) { + openHelper.close() + openHelpersToClear.add(databasePath) + } } - } - openHelpersToClear.forEach { - openHelpers.remove(it) + openHelpersToClear.forEach { + openHelpers.remove(it) + } } } @JvmStatic fun closeAll() { - openHelpers.forEach { (_, openHelper) -> openHelper.close() } - openHelpers.clear() + synchronized(openHelpers) { + openHelpers.forEach { (_, openHelper) -> openHelper.close() } + openHelpers.clear() - toClose.forEach(SQLiteOpenHelper::close) - toClose.clear() + toClose.forEach(SQLiteOpenHelper::close) + toClose.clear() + } } } }