From eb57d8751371438cd65fe6197ca5d0a87f8f9df3 Mon Sep 17 00:00:00 2001 From: Chris Eager Date: Wed, 2 Nov 2022 17:15:13 -0500 Subject: [PATCH] Remove message listener key only after successfully unsubscribing --- .../whispersystems/textsecuregcm/storage/MessagesCache.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/storage/MessagesCache.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/MessagesCache.java index fde41c5d7..1fb2f87fb 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/storage/MessagesCache.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/storage/MessagesCache.java @@ -384,12 +384,13 @@ public class MessagesCache extends RedisClusterPubSubAdapter imp } public void removeMessageAvailabilityListener(final MessageAvailabilityListener listener) { - @Nullable final String queueName = queueNamesByMessageListener.remove(listener); + @Nullable final String queueName = queueNamesByMessageListener.get(listener); if (queueName != null) { unsubscribeFromKeyspaceNotifications(queueName); synchronized (messageListenersByQueueName) { + queueNamesByMessageListener.remove(listener); messageListenersByQueueName.remove(queueName); } }