diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobmanager/JobController.java b/app/src/main/java/org/thoughtcrime/securesms/jobmanager/JobController.java index 76be46f1de..53a345e6fd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobmanager/JobController.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobmanager/JobController.java @@ -103,6 +103,10 @@ class JobController { return; } + if (chainContainsUnsatisfiableConditions(chain)) { + throw new AssertionError("Unsatisfiable conditions found in job chain!"); + } + insertJobChain(chain); scheduleJobs(chain.get(0)); } @@ -402,6 +406,20 @@ class JobController { } } + @WorkerThread + private boolean chainContainsUnsatisfiableConditions(@NonNull List> chain) { + int firstGlobalPriority = chain.get(0).get(0).getParameters().getGlobalPriority(); + for (List segment : chain) { + for (Job job : segment) { + if (job.getParameters().getGlobalPriority() > firstGlobalPriority) { + return true; + } + } + } + + return false; + } + @WorkerThread private boolean exceedsMaximumInstances(@NonNull Job job) { boolean exceedsFactory = job.getParameters().getMaxInstancesForFactory() != Job.Parameters.UNLIMITED && diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationViewModel.kt index fe2f65744f..4d248f841f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationViewModel.kt @@ -878,7 +878,7 @@ class RegistrationViewModel : ViewModel() { stopwatch.split("account-restore") AppDependencies.jobManager - .startChain(StorageSyncJob.forRemoteChange()) + .startChain(StorageSyncJob.forAccountRestore()) .then(ReclaimUsernameAndLinkJob()) .enqueueAndBlockUntilCompletion(TimeUnit.SECONDS.toMillis(10)) stopwatch.split("storage-sync")