From 61cd786e7f38c210e6a9ce4f95cafd7689ff982b Mon Sep 17 00:00:00 2001 From: AntsyLich <59261191+AntsyLich@users.noreply.github.com> Date: Sun, 4 Oct 2026 19:29:46 +0600 Subject: [PATCH] Use WAL on every device --- data/src/main/java/tachiyomi/data/DatabaseBindings.kt | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/data/src/main/java/tachiyomi/data/DatabaseBindings.kt b/data/src/main/java/tachiyomi/data/DatabaseBindings.kt index 667442866..c1af0f6f3 100644 --- a/data/src/main/java/tachiyomi/data/DatabaseBindings.kt +++ b/data/src/main/java/tachiyomi/data/DatabaseBindings.kt @@ -14,7 +14,6 @@ import com.eygraber.sqldelight.androidx.driver.AndroidxSqliteConnectionFactory import com.eygraber.sqldelight.androidx.driver.AndroidxSqliteDatabaseType import com.eygraber.sqldelight.androidx.driver.AndroidxSqliteDriver import com.eygraber.sqldelight.androidx.driver.FileProvider -import com.eygraber.sqldelight.androidx.driver.SqliteJournalMode import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.BindingContainer import dev.zacsweers.metro.ContributesTo @@ -26,13 +25,13 @@ import dev.zacsweers.metro.SingleIn object DatabaseBindings { /** - * Configured like Room's connection manager: WAL unless the device is low on RAM, one writer with four - * readers (one in TRUNCATE mode), and a busy timeout on every connection. + * WAL on every device, so a write never blocks reads. Low-RAM devices get one reader instead of four, since each + * connection keeps its own page cache. */ @Provides @SingleIn(AppScope::class) fun providesSqlDriver(context: Context): SqlDriver { - val isWal = context.getSystemService()?.isLowRamDevice ?: true + val isLowRam = context.getSystemService()?.isLowRamDevice == true return AndroidxSqliteDriver( connectionFactory = object : AndroidxSqliteConnectionFactory { override val driver: SQLiteDriver = BundledSQLiteDriver() @@ -47,8 +46,7 @@ object DatabaseBindings { schema = Database.Schema, configuration = AndroidxSqliteConfiguration( isForeignKeyConstraintsEnabled = true, - journalMode = if (isWal) SqliteJournalMode.WAL else SqliteJournalMode.Truncate, - concurrencyModel = MultipleReadersSingleWriter(isWal = isWal, nonWalCount = 1, walCount = 4), + concurrencyModel = MultipleReadersSingleWriter(isWal = true, walCount = if (isLowRam) 1 else 4), ), ) }