Update backoff logic of ClearFallbackKbsEnclaveJob.

fork-5.53.8
Greyson Parrelli 2022-06-20 15:30:50 -04:00
rodzic c0735c8119
commit 290fbbb9ee
1 zmienionych plików z 20 dodań i 1 usunięć

Wyświetl plik

@ -10,6 +10,7 @@ import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobmanager.JobManager; import org.thoughtcrime.securesms.jobmanager.JobManager;
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
import org.thoughtcrime.securesms.pin.KbsEnclaves; import org.thoughtcrime.securesms.pin.KbsEnclaves;
import org.whispersystems.signalservice.api.push.exceptions.NonSuccessfulResponseCodeException;
import org.whispersystems.signalservice.internal.contacts.crypto.UnauthenticatedResponseException; import org.whispersystems.signalservice.internal.contacts.crypto.UnauthenticatedResponseException;
import java.io.IOException; import java.io.IOException;
@ -80,12 +81,30 @@ public class ClearFallbackKbsEnclaveJob extends BaseJob {
@Override @Override
public boolean onShouldRetry(@NonNull Exception e) { public boolean onShouldRetry(@NonNull Exception e) {
if (e instanceof NonSuccessfulResponseCodeException) {
switch (((NonSuccessfulResponseCodeException) e).getCode()) {
case 404:
return getRunAttempt() < 3;
case 508:
return false;
}
}
return true; return true;
} }
@Override
public long getNextRunAttemptBackoff(int pastAttemptCount, @NonNull Exception e) {
if (e instanceof NonSuccessfulResponseCodeException && ((NonSuccessfulResponseCodeException) e).getCode() == 404) {
return TimeUnit.DAYS.toMillis(1);
} else {
return super.getNextRunAttemptBackoff(pastAttemptCount, e);
}
}
@Override @Override
public void onFailure() { public void onFailure() {
throw new AssertionError("This job should never fail. " + getClass().getSimpleName()); Log.w(TAG, "Job failed! It is likely that the old enclave is offline.");
} }
public static class Factory implements Job.Factory<ClearFallbackKbsEnclaveJob> { public static class Factory implements Job.Factory<ClearFallbackKbsEnclaveJob> {