From 4d1bca2d9714e79978a235016d4c952ba63a3539 Mon Sep 17 00:00:00 2001 From: Jon Chambers Date: Thu, 21 Dec 2023 13:33:07 -0500 Subject: [PATCH] Dispatch client presence operations after account deletion to a dedicated executor --- .../whispersystems/textsecuregcm/storage/AccountsManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountsManager.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountsManager.java index 06bf787f7..3243b8dd4 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountsManager.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountsManager.java @@ -1019,9 +1019,9 @@ public class AccountsManager { registrationRecoveryPasswordsManager.removeForNumber(account.getNumber())) .thenCompose(ignored -> accounts.delete(account.getUuid(), additionalWriteItems)) .thenCompose(ignored -> redisDeleteAsync(account)) - .thenRun(() -> RedisOperation.unchecked(() -> + .thenRunAsync(() -> RedisOperation.unchecked(() -> account.getDevices().forEach(device -> - clientPresenceManager.disconnectPresence(account.getUuid(), device.getId())))); + clientPresenceManager.disconnectPresence(account.getUuid(), device.getId()))), clientPresenceExecutor); } private String getUsernameHashAccountMapKey(byte[] usernameHash) {