Use specific remote config for slow database notification.

This commit is contained in:
Greyson Parrelli
2026-05-30 14:28:41 -04:00
committed by Alex Hart
parent f5f5bf0a67
commit 843b656fb6
3 changed files with 16 additions and 3 deletions
@@ -511,8 +511,9 @@ public class ApplicationContext extends Application implements AppForegroundObse
private void initializeTracer() {
if (RemoteConfig.internalUser()) {
Tracer.getInstance().setMaxBufferSize(35_000);
SQLiteDatabase.setSlowWriteLoggingEnabled(true);
}
SQLiteDatabase.setSlowWriteLoggingEnabled(RemoteConfig.slowDatabaseNotifications());
}
private void initializePeriodicTasks() {
@@ -26,7 +26,8 @@ import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.Duration.Companion.minutes
/**
* Internal-user-only notifier that surfaces SQLite write-lock contention.
* Notifier that surfaces SQLite write-lock contention. Gated behind the
* [RemoteConfig.slowDatabaseNotifications] flag.
*/
object SlowTransactionInternalNotifier {
@@ -41,7 +42,7 @@ object SlowTransactionInternalNotifier {
@JvmStatic
fun onSlowEvent() {
if (!RemoteConfig.internalUser) {
if (!RemoteConfig.slowDatabaseNotifications) {
return
}
@@ -11,6 +11,7 @@ import org.signal.core.util.gibiBytes
import org.signal.core.util.kibiBytes
import org.signal.core.util.logging.Log
import org.signal.core.util.mebiBytes
import org.thoughtcrime.securesms.database.SQLiteDatabase
import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.groups.SelectionLimits
import org.thoughtcrime.securesms.jobs.RemoteConfigRefreshJob
@@ -693,6 +694,16 @@ object RemoteConfig {
hotSwappable = true
)
/** Whether we log and surface notifications for slow database transactions/queries. */
@JvmStatic
@get:JvmName("slowDatabaseNotifications")
val slowDatabaseNotifications: Boolean by remoteBoolean(
key = "android.slowDatabaseNotifications",
defaultValue = false,
hotSwappable = true,
onChangeListener = { SQLiteDatabase.setSlowWriteLoggingEnabled(it.newValue.asBoolean(false)) }
)
/** How often we allow an automatic session reset. */
@JvmStatic
@get:JvmName("automaticSessionResetIntervalSeconds")