|
|
|
@ -516,13 +516,13 @@ public class OpenIddictMongoDbTokenStore< |
|
|
|
authorizations.Any(token => token.Status != Statuses.Valid) |
|
|
|
select token.Id).ToListAsync(cancellationToken); |
|
|
|
|
|
|
|
// Note: to avoid generating delete requests with very large filters, a buffer is used here and the
|
|
|
|
// Note: to avoid generating delete requests with very large filters, chunking is used here and the
|
|
|
|
// maximum number of elements that can be removed by a single call to PruneAsync() is deliberately limited.
|
|
|
|
foreach (var buffer in identifiers.Take(1_000_000).Chunk(1_000)) |
|
|
|
foreach (var chunk in identifiers.Take(1_000_000).Chunk(1_000)) |
|
|
|
{ |
|
|
|
// Note: Enumerable.Contains() is deliberately used without the extension method syntax to ensure the
|
|
|
|
// span-based MemoryExtensions.Contains() API (which is not supported by MongoDB) is not used instead.
|
|
|
|
result += (await collection.DeleteManyAsync(token => Enumerable.Contains(buffer, token.Id), cancellationToken)).DeletedCount; |
|
|
|
result += (await collection.DeleteManyAsync(token => Enumerable.Contains(chunk, token.Id), cancellationToken)).DeletedCount; |
|
|
|
} |
|
|
|
|
|
|
|
return result; |
|
|
|
|