mirror of
https://github.com/signalapp/Signal-Server
synced 2026-04-19 20:48:03 +01:00
Add methods for iterating over all account identifiers
This commit is contained in:
committed by
Jon Chambers
parent
b203344ed4
commit
b8b17ae473
@@ -1242,6 +1242,26 @@ public class Accounts {
|
||||
.sequential();
|
||||
}
|
||||
|
||||
Flux<UUID> getAllAccountIdentifiers(final int segments, final Scheduler scheduler) {
|
||||
if (segments < 1) {
|
||||
throw new IllegalArgumentException("Total number of segments must be positive");
|
||||
}
|
||||
|
||||
return Flux.range(0, segments)
|
||||
.parallel()
|
||||
.runOn(scheduler)
|
||||
.flatMap(segment -> dynamoDbAsyncClient.scanPaginator(ScanRequest.builder()
|
||||
.tableName(accountsTableName)
|
||||
.consistentRead(false)
|
||||
.segment(segment)
|
||||
.totalSegments(segments)
|
||||
.projectionExpression(KEY_ACCOUNT_UUID)
|
||||
.build())
|
||||
.items()
|
||||
.map(item -> AttributeValues.getUUID(item, KEY_ACCOUNT_UUID, null)))
|
||||
.sequential();
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
private Optional<Account> getByIndirectLookup(
|
||||
final Timer timer,
|
||||
|
||||
@@ -1217,6 +1217,10 @@ public class AccountsManager extends RedisPubSubAdapter<String, String> implemen
|
||||
return accounts.getAll(segments, scheduler);
|
||||
}
|
||||
|
||||
public Flux<UUID> streamAccountIdentifiersFromDynamo(final int segments, final Scheduler scheduler) {
|
||||
return accounts.getAllAccountIdentifiers(segments, scheduler);
|
||||
}
|
||||
|
||||
public CompletableFuture<Void> delete(final Account account, final DeletionReason deletionReason) {
|
||||
final Timer.Sample sample = Timer.start();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user