diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/push/ClientPresenceManager.java b/service/src/main/java/org/whispersystems/textsecuregcm/push/ClientPresenceManager.java index a165725cf..47062300b 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/push/ClientPresenceManager.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/push/ClientPresenceManager.java @@ -115,7 +115,13 @@ public class ClientPresenceManager extends RedisClusterPubSubAdapter connection.sync().sadd(MANAGER_SET_KEY, managerId)); - pruneMissingPeersFuture = scheduledExecutorService.scheduleAtFixedRate(this::pruneMissingPeers, new Random().nextInt(PRUNE_PEERS_INTERVAL_SECONDS), PRUNE_PEERS_INTERVAL_SECONDS, TimeUnit.SECONDS); + pruneMissingPeersFuture = scheduledExecutorService.scheduleAtFixedRate(() -> { + try { + pruneMissingPeers(); + } catch (final Throwable t) { + log.warn("Failed to prune missing peers", t); + } + }, new Random().nextInt(PRUNE_PEERS_INTERVAL_SECONDS), PRUNE_PEERS_INTERVAL_SECONDS, TimeUnit.SECONDS); } @Override