From afbce6f8004c2b2d4924b2b611b2986577baf51a Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Fri, 10 Feb 2023 12:54:42 -0500 Subject: [PATCH] Re-enable FTS optimization after deletes. --- .../securesms/database/MessageTable.java | 5 +++-- .../jobs/OptimizeMessageSearchIndexJob.kt | 20 +++++++++---------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.java b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.java index c2e424fd5..4eb7f8dd1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.java @@ -1533,12 +1533,11 @@ public class MessageTable extends DatabaseTable implements MessageTypes, Recipie return releaseChannelThreadId; } - public void deleteGroupStoryReplies(long parentStoryId) { + private void deleteGroupStoryReplies(long parentStoryId) { SQLiteDatabase db = databaseHelper.getSignalWritableDatabase(); String[] args = SqlUtil.buildArgs(parentStoryId); db.delete(TABLE_NAME, PARENT_STORY_ID + " = ?", args); - OptimizeMessageSearchIndexJob.enqueue(); } public int deleteStoriesOlderThan(long timestamp, boolean hasSeenReleaseChannelStories) { @@ -1940,6 +1939,8 @@ public class MessageTable extends DatabaseTable implements MessageTypes, Recipie db.endTransaction(); } + OptimizeMessageSearchIndexJob.enqueue(); + ApplicationDependencies.getDatabaseObserver().notifyMessageUpdateObservers(new MessageId(messageId)); ApplicationDependencies.getDatabaseObserver().notifyConversationListListeners(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/OptimizeMessageSearchIndexJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/OptimizeMessageSearchIndexJob.kt index 80da8c115..b970a9426 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/OptimizeMessageSearchIndexJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/OptimizeMessageSearchIndexJob.kt @@ -1,10 +1,12 @@ package org.thoughtcrime.securesms.jobs +import org.thoughtcrime.securesms.database.SignalDatabase +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies import org.thoughtcrime.securesms.jobmanager.Data import org.thoughtcrime.securesms.jobmanager.Job import org.thoughtcrime.securesms.transport.RetryLaterException import java.lang.Exception -import kotlin.time.Duration.Companion.minutes +import kotlin.time.Duration.Companion.seconds /** * Optimizes the message search index incrementally. @@ -16,8 +18,7 @@ class OptimizeMessageSearchIndexJob private constructor(parameters: Parameters) @JvmStatic fun enqueue() { - // TODO [greyson] Temporarily disabled until we can figure out what to do. -// ApplicationDependencies.getJobManager().add(OptimizeMessageSearchIndexJob()) + ApplicationDependencies.getJobManager().add(OptimizeMessageSearchIndexJob()) } } @@ -33,15 +34,14 @@ class OptimizeMessageSearchIndexJob private constructor(parameters: Parameters) override fun getFactoryKey() = KEY override fun onFailure() = Unit override fun onShouldRetry(e: Exception) = e is RetryLaterException - override fun getNextRunAttemptBackoff(pastAttemptCount: Int, exception: Exception): Long = 1.minutes.inWholeMilliseconds + override fun getNextRunAttemptBackoff(pastAttemptCount: Int, exception: Exception): Long = 30.seconds.inWholeMilliseconds override fun onRun() { - // TODO [greyson] Temporarily disabled until we can figure out what to do. -// val success = SignalDatabase.messageSearch.optimizeIndex(10.seconds.inWholeMilliseconds) -// -// if (!success) { -// throw RetryLaterException() -// } + val success = SignalDatabase.messageSearch.optimizeIndex(5.seconds.inWholeMilliseconds) + + if (!success) { + throw RetryLaterException() + } } class Factory : Job.Factory {