diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/storage/SqliteStoreBuilder.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/storage/SqliteStoreBuilder.kt index 7b5d9fb31c..84f124868e 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/storage/SqliteStoreBuilder.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/storage/SqliteStoreBuilder.kt @@ -7,6 +7,8 @@ package io.element.android.libraries.matrix.impl.storage +import io.element.android.libraries.core.data.ByteUnit +import io.element.android.libraries.core.data.megaBytes import io.element.android.libraries.matrix.impl.paths.SessionPaths import org.matrix.rustcomponents.sdk.ClientBuilder import org.matrix.rustcomponents.sdk.SqliteStoreBuilder as SdkSqliteStoreBuilder @@ -17,12 +19,12 @@ interface SqliteStoreBuilder { } class RustSqliteStoreBuilder( - private val sessionPaths: SessionPaths, + sessionPaths: SessionPaths, ) : SqliteStoreBuilder { private var inner = SdkSqliteStoreBuilder( dataPath = sessionPaths.fileDirectory.absolutePath, cachePath = sessionPaths.cacheDirectory.absolutePath, - ) + ).journalSizeLimit(25.megaBytes.into(ByteUnit.BYTES).toUInt()) override fun passphrase(passphrase: String?): SqliteStoreBuilder { inner = inner.passphrase(passphrase) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/workmanager/PerformDatabaseVacuumWorkManagerRequest.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/workmanager/PerformDatabaseVacuumWorkManagerRequest.kt index 9c192bd96d..a8636eb5d9 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/workmanager/PerformDatabaseVacuumWorkManagerRequest.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/workmanager/PerformDatabaseVacuumWorkManagerRequest.kt @@ -32,7 +32,13 @@ class PerformDatabaseVacuumWorkManagerRequest( .addTag(workManagerTag(sessionId, WorkManagerRequestType.DB_VACUUM)) .setInputData(data) // Only run when the device is idle to avoid impacting user experience - .setConstraints(Constraints.Builder().setRequiresDeviceIdle(true).build()) + .setConstraints( + Constraints.Builder() + .setRequiresDeviceIdle(true) + // Vacuuming can duplicate the DB sizes in disk + .setRequiresStorageNotLow(true) + .build() + ) .build() return Result.success(listOf(workRequest))