From a7266364d13bba5edd354e70e878c3107a49dad5 Mon Sep 17 00:00:00 2001 From: Jon Chambers Date: Fri, 4 Sep 2020 17:34:56 -0400 Subject: [PATCH] Refactor peer pruning to be more retry-friendly. --- .../push/ClientPresenceManager.java | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) 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 0e28c7062..e8908454c 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/push/ClientPresenceManager.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/push/ClientPresenceManager.java @@ -221,18 +221,16 @@ public class ClientPresenceManager extends RedisClusterPubSubAdapter connection.sync().spop(connectedClientsKey))) != null) { + clearPresenceScript.execute(List.of(presenceKey), List.of(peerId)); + pruneClientMeter.mark(); + } + presenceCluster.useCluster(connection -> { - final RedisAdvancedClusterCommands commands = connection.sync(); - - String presenceKey; - - while ((presenceKey = commands.spop(connectedClientsKey)) != null) { - clearPresenceScript.execute(List.of(presenceKey), List.of(peerId)); - pruneClientMeter.mark(); - } - - commands.del(connectedClientsKey); - commands.srem(MANAGER_SET_KEY, peerId); + connection.sync().del(connectedClientsKey); + connection.sync().srem(MANAGER_SET_KEY, peerId); }); } }