Add some DB optimizations (#6249)
* Set a maximum journal size limit (WAL file size) of 25MB The previous value was null, which meant unlimited growth. This can affect performance, since the WAL file performance as a cache will worsen the larger it is * When scheduling the vacuum task, make sure the user has enough free disk storage, since vacuuming can duplicate the DB sizes in disk
This commit is contained in:
committed by
GitHub
parent
5f29446f75
commit
dc11430a73
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user