Clear account records from the account cache after username operations
This commit is contained in:
parent
1bebceb29c
commit
4aa4246695
|
@ -571,6 +571,12 @@ public class AccountsManager {
|
|||
() -> accounts.getByAccountIdentifierAsync(account.getUuid()).thenApply(Optional::orElseThrow),
|
||||
AccountChangeValidator.USERNAME_CHANGE_VALIDATOR,
|
||||
MAX_UPDATE_ATTEMPTS))
|
||||
.whenComplete((updatedAccount, throwable) -> {
|
||||
if (throwable == null) {
|
||||
// Make a best effort to clear any stale data that may have been cached while this operation was in progress
|
||||
redisDeleteAsync(updatedAccount);
|
||||
}
|
||||
})
|
||||
.thenApply(updatedAccount -> new UsernameReservation(updatedAccount, reservedUsernameHash.get()));
|
||||
}
|
||||
|
||||
|
@ -623,7 +629,13 @@ public class AccountsManager {
|
|||
() -> accounts.getByAccountIdentifierAsync(account.getUuid()).thenApply(Optional::orElseThrow),
|
||||
AccountChangeValidator.USERNAME_CHANGE_VALIDATOR,
|
||||
MAX_UPDATE_ATTEMPTS
|
||||
));
|
||||
))
|
||||
.whenComplete((updatedAccount, throwable) -> {
|
||||
if (throwable == null) {
|
||||
// Make a best effort to clear any stale data that may have been cached while this operation was in progress
|
||||
redisDeleteAsync(updatedAccount);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public CompletableFuture<Account> clearUsernameHash(final Account account) {
|
||||
|
@ -634,7 +646,13 @@ public class AccountsManager {
|
|||
accounts::clearUsernameHash,
|
||||
() -> accounts.getByAccountIdentifierAsync(account.getUuid()).thenApply(Optional::orElseThrow),
|
||||
AccountChangeValidator.USERNAME_CHANGE_VALIDATOR,
|
||||
MAX_UPDATE_ATTEMPTS));
|
||||
MAX_UPDATE_ATTEMPTS))
|
||||
.whenComplete((updatedAccount, throwable) -> {
|
||||
if (throwable == null) {
|
||||
// Make a best effort to clear any stale data that may have been cached while this operation was in progress
|
||||
redisDeleteAsync(updatedAccount);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public Account update(Account account, Consumer<Account> updater) {
|
||||
|
|
|
@ -1346,7 +1346,7 @@ class AccountsManagerTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
void testReserveUsernameHash() throws UsernameHashNotAvailableException {
|
||||
void testReserveUsernameHash() {
|
||||
final Account account = AccountsHelper.generateTestAccount("+18005551234", UUID.randomUUID(), UUID.randomUUID(), new ArrayList<>(), new byte[UnidentifiedAccessUtil.UNIDENTIFIED_ACCESS_KEY_LENGTH]);
|
||||
when(accounts.getByAccountIdentifierAsync(account.getUuid())).thenReturn(CompletableFuture.completedFuture(Optional.of(account)));
|
||||
|
||||
|
@ -1359,7 +1359,7 @@ class AccountsManagerTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
void testReserveOwnUsernameHash() throws UsernameHashNotAvailableException {
|
||||
void testReserveOwnUsernameHash() {
|
||||
final byte[] oldUsernameHash = TestRandomUtil.nextBytes(32);
|
||||
final Account account = AccountsHelper.generateTestAccount("+18005551234", UUID.randomUUID(), UUID.randomUUID(), new ArrayList<>(), new byte[UnidentifiedAccessUtil.UNIDENTIFIED_ACCESS_KEY_LENGTH]);
|
||||
account.setUsernameHash(oldUsernameHash);
|
||||
|
@ -1373,7 +1373,7 @@ class AccountsManagerTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
void testReserveUsernameOptimisticLockingFailure() throws UsernameHashNotAvailableException {
|
||||
void testReserveUsernameOptimisticLockingFailure() {
|
||||
final Account account = AccountsHelper.generateTestAccount("+18005551234", UUID.randomUUID(), UUID.randomUUID(), new ArrayList<>(), new byte[UnidentifiedAccessUtil.UNIDENTIFIED_ACCESS_KEY_LENGTH]);
|
||||
when(accounts.getByAccountIdentifierAsync(account.getUuid())).thenReturn(CompletableFuture.completedFuture(Optional.of(account)));
|
||||
|
||||
|
|
Loading…
Reference in New Issue