Prevent thread trimming from gumming up the database.

This commit is contained in:
Greyson Parrelli
2023-01-27 12:41:41 -05:00
parent 30c33fdd77
commit 7348224dc2
3 changed files with 13 additions and 10 deletions

View File

@@ -12,6 +12,7 @@ import androidx.annotation.WorkerThread;
import org.signal.core.util.ThreadUtil;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.jobmanager.impl.DefaultExecutorFactory;
import org.thoughtcrime.securesms.jobmanager.impl.JsonDataSerializer;
import org.thoughtcrime.securesms.jobmanager.persistence.JobSpec;
@@ -60,7 +61,12 @@ public class JobManager implements ConstraintObserver.Notifier {
public JobManager(@NonNull Application application, @NonNull Configuration configuration) {
this.application = application;
this.configuration = configuration;
this.executor = ThreadUtil.trace(new FilteredExecutor(configuration.getExecutorFactory().newSingleThreadExecutor("signal-JobManager"), ThreadUtil::isMainThread));
this.executor = ThreadUtil.trace(new FilteredExecutor(configuration.getExecutorFactory().newSingleThreadExecutor("signal-JobManager"), () -> {
if (SignalDatabase.inTransaction()) {
Log.w(TAG, "Enqueuing a job while in a transaction!", new Throwable());
}
return ThreadUtil.isMainThread();
}));
this.jobTracker = configuration.getJobTracker();
this.jobController = new JobController(application,
configuration.getJobStorage(),