From 843b656fb6a8213996bf5d360db5b9c521238615 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Sat, 30 May 2026 14:28:41 -0400 Subject: [PATCH] Use specific remote config for slow database notification. --- .../thoughtcrime/securesms/ApplicationContext.java | 3 ++- .../database/SlowTransactionInternalNotifier.kt | 5 +++-- .../org/thoughtcrime/securesms/util/RemoteConfig.kt | 11 +++++++++++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java index 88b223c5c6..ae85e0b6fa 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java +++ b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java @@ -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() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SlowTransactionInternalNotifier.kt b/app/src/main/java/org/thoughtcrime/securesms/database/SlowTransactionInternalNotifier.kt index bb70dbce7c..abdc40ca13 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SlowTransactionInternalNotifier.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SlowTransactionInternalNotifier.kt @@ -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 } diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt b/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt index 5a13796f13..6def4ab3f8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt @@ -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")