diff --git a/src/main/java/org/whispersystems/textsecuregcm/push/ApnFallbackManager.java b/src/main/java/org/whispersystems/textsecuregcm/push/ApnFallbackManager.java index 7534a491e..f319e8a29 100644 --- a/src/main/java/org/whispersystems/textsecuregcm/push/ApnFallbackManager.java +++ b/src/main/java/org/whispersystems/textsecuregcm/push/ApnFallbackManager.java @@ -21,6 +21,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Optional; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import static com.codahale.metrics.MetricRegistry.name; @@ -147,6 +148,14 @@ public class ApnFallbackManager implements Managed, Runnable { continue; } + long deviceLastSeen = device.get().getLastSeen(); + + if (deviceLastSeen < System.currentTimeMillis() - TimeUnit.DAYS.toMillis(90)) { + logger.info("Evicting retry after 90 days: " + account.get().getNumber() + ", " + device.get().getId()); + removeOperation.remove(account.get(), device.get()); + continue; + } + apnSender.sendMessage(new ApnMessage(apnId, separated.get().first(), separated.get().second(), true)); retry.mark(); }