From a762a9201e4ad9ec0a88ee45c0402b2c0b388baf Mon Sep 17 00:00:00 2001 From: Laura Hausmann Date: Wed, 20 Nov 2024 01:05:00 +0100 Subject: [PATCH] [backend/core] Revert IAsyncEnumerable naming --- .../Controllers/Web/AdminController.cs | 4 ++-- .../Core/Extensions/QueryableExtensions.cs | 18 +++++++++++------- .../Core/Extensions/ServiceExtensions.cs | 5 +++-- .../Federation/ActivityPub/ObjectResolver.cs | 4 +++- Iceshrimp.Backend/Core/Queues/BackfillQueue.cs | 2 +- .../Core/Queues/BackgroundTaskQueue.cs | 4 ++-- Iceshrimp.Backend/Core/Services/NoteService.cs | 2 +- .../Core/Services/ObjectStorageService.cs | 4 +++- .../Core/Services/StorageMaintenanceService.cs | 2 +- Iceshrimp.Backend/Core/Services/UserService.cs | 6 ++---- .../Core/Tasks/MediaCleanupTask.cs | 2 +- 11 files changed, 30 insertions(+), 23 deletions(-) diff --git a/Iceshrimp.Backend/Controllers/Web/AdminController.cs b/Iceshrimp.Backend/Controllers/Web/AdminController.cs index a36479e7..603c9bb9 100644 --- a/Iceshrimp.Backend/Controllers/Web/AdminController.cs +++ b/Iceshrimp.Backend/Controllers/Web/AdminController.cs @@ -227,7 +227,7 @@ public class AdminController( { var jobs = db.Jobs .Where(p => p.Queue == queue && p.Status == Job.JobStatus.Failed) - .AsChunkedAsyncEnumerableAsync(10, p => p.Id); + .AsChunkedAsyncEnumerable(10, p => p.Id); await foreach (var job in jobs) await queueSvc.RetryJobAsync(job); @@ -240,7 +240,7 @@ public class AdminController( var jobs = db.Jobs .Where(p => p.Queue == queue && p.Status == Job.JobStatus.Failed) .Where(p => p.Id >= from && p.Id <= to) - .AsChunkedAsyncEnumerableAsync(10, p => p.Id); + .AsChunkedAsyncEnumerable(10, p => p.Id); await foreach (var job in jobs) await queueSvc.RetryJobAsync(job); diff --git a/Iceshrimp.Backend/Core/Extensions/QueryableExtensions.cs b/Iceshrimp.Backend/Core/Extensions/QueryableExtensions.cs index cd7b4f05..3a251739 100644 --- a/Iceshrimp.Backend/Core/Extensions/QueryableExtensions.cs +++ b/Iceshrimp.Backend/Core/Extensions/QueryableExtensions.cs @@ -28,7 +28,8 @@ public static class QueryableExtensions /// The result set as an IAsyncEnumerable. Makes one DB roundtrip at the start of each chunk. /// Successive items in the chunk are yielded instantaneously. /// - public static async IAsyncEnumerable AsChunkedAsyncEnumerableAsync(this IQueryable query, int chunkSize) + [SuppressMessage("ReSharper", "InconsistentNaming")] + public static async IAsyncEnumerable AsChunkedAsyncEnumerable(this IQueryable query, int chunkSize) { var offset = 0; while (true) @@ -41,13 +42,14 @@ public static class QueryableExtensions } } - /// + /// /// /// This overload requires you to pass a predicate to the identifier. /// .OrderBy() is appended to the query. /// Set the parameter to append things to the query after pagination, for cases where query translation would fail otherwise. /// - public static async IAsyncEnumerable AsChunkedAsyncEnumerableAsync( + [SuppressMessage("ReSharper", "InconsistentNaming")] + public static async IAsyncEnumerable AsChunkedAsyncEnumerable( this IQueryable query, int chunkSize, Expression> idPredicate, Func, IQueryable>? hook = null ) @@ -70,8 +72,9 @@ public static class QueryableExtensions } } - /// - public static async IAsyncEnumerable AsChunkedAsyncEnumerableAsync( + /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + public static async IAsyncEnumerable AsChunkedAsyncEnumerable( this IQueryable query, int chunkSize, Expression> idPredicate, Func, IQueryable>? hook = null ) @@ -94,8 +97,9 @@ public static class QueryableExtensions } } - /// - public static async IAsyncEnumerable AsChunkedAsyncEnumerableAsync( + /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + public static async IAsyncEnumerable AsChunkedAsyncEnumerable( this IQueryable query, int chunkSize, Expression> idPredicate, Func, IQueryable>? hook = null ) diff --git a/Iceshrimp.Backend/Core/Extensions/ServiceExtensions.cs b/Iceshrimp.Backend/Core/Extensions/ServiceExtensions.cs index 85f346fd..e9c04fba 100644 --- a/Iceshrimp.Backend/Core/Extensions/ServiceExtensions.cs +++ b/Iceshrimp.Backend/Core/Extensions/ServiceExtensions.cs @@ -432,9 +432,10 @@ file sealed class EntityFrameworkCoreXmlRepositoryAsync : IXmlReposito public IReadOnlyCollection GetAllElements() { - return GetAllElementsCoreAsync().ToBlockingEnumerable().ToList().AsReadOnly(); + return GetAllElementsCore().ToBlockingEnumerable().ToList().AsReadOnly(); - async IAsyncEnumerable GetAllElementsCoreAsync() + [SuppressMessage("ReSharper", "InconsistentNaming")] + async IAsyncEnumerable GetAllElementsCore() { using var scope = _services.CreateScope(); var @enum = scope.ServiceProvider.GetRequiredService() diff --git a/Iceshrimp.Backend/Core/Federation/ActivityPub/ObjectResolver.cs b/Iceshrimp.Backend/Core/Federation/ActivityPub/ObjectResolver.cs index bfda4474..002d9f51 100644 --- a/Iceshrimp.Backend/Core/Federation/ActivityPub/ObjectResolver.cs +++ b/Iceshrimp.Backend/Core/Federation/ActivityPub/ObjectResolver.cs @@ -1,3 +1,4 @@ +using System.Diagnostics.CodeAnalysis; using Iceshrimp.Backend.Core.Configuration; using Iceshrimp.Backend.Core.Database; using Iceshrimp.Backend.Core.Database.Tables; @@ -92,7 +93,8 @@ public class ObjectResolver( } } - public async IAsyncEnumerable IterateCollectionAsync( + [SuppressMessage("ReSharper", "InconsistentNaming")] + public async IAsyncEnumerable IterateCollection( ASCollection? collection, User? user = null, int pageLimit = 10 ) { diff --git a/Iceshrimp.Backend/Core/Queues/BackfillQueue.cs b/Iceshrimp.Backend/Core/Queues/BackfillQueue.cs index e115d093..99c6cbcc 100644 --- a/Iceshrimp.Backend/Core/Queues/BackfillQueue.cs +++ b/Iceshrimp.Backend/Core/Queues/BackfillQueue.cs @@ -83,7 +83,7 @@ public class BackfillQueue(int parallelism) .Where(n => n.Id == current.Id) .ExecuteUpdateAsync(p => p.SetProperty(n => n.RepliesFetchedAt, DateTime.UtcNow), token); - await foreach (var asNote in objectResolver.IterateCollectionAsync(new ASCollection(current.RepliesCollection), user: user) + await foreach (var asNote in objectResolver.IterateCollection(new ASCollection(current.RepliesCollection), user: user) .Take(MaxRepliesPerNote) .Where(p => p.Id != null) .WithCancellation(token)) diff --git a/Iceshrimp.Backend/Core/Queues/BackgroundTaskQueue.cs b/Iceshrimp.Backend/Core/Queues/BackgroundTaskQueue.cs index 3130571a..b276148b 100644 --- a/Iceshrimp.Backend/Core/Queues/BackgroundTaskQueue.cs +++ b/Iceshrimp.Backend/Core/Queues/BackgroundTaskQueue.cs @@ -272,7 +272,7 @@ public class BackgroundTaskQueue(int parallelism) var fileIdQ = db.DriveFiles.Where(p => p.User == user).Select(p => p.Id); var fileIdCnt = await fileIdQ.CountAsync(token); - var fileIds = fileIdQ.AsChunkedAsyncEnumerableAsync(50, p => p); + var fileIds = fileIdQ.AsChunkedAsyncEnumerable(50, p => p); logger.LogDebug("Removing {count} files for user {id}", fileIdCnt, user.Id); await foreach (var id in fileIds) { @@ -284,7 +284,7 @@ public class BackgroundTaskQueue(int parallelism) var noteQ = db.Notes.Where(p => p.User == user).Select(p => p.Id); var noteCnt = await noteQ.CountAsync(token); - var noteIds = noteQ.AsChunkedAsyncEnumerableAsync(50, p => p); + var noteIds = noteQ.AsChunkedAsyncEnumerable(50, p => p); logger.LogDebug("Removing {count} notes for user {id}", noteCnt, user.Id); await foreach (var id in noteIds) { diff --git a/Iceshrimp.Backend/Core/Services/NoteService.cs b/Iceshrimp.Backend/Core/Services/NoteService.cs index f9a2b065..1d440021 100644 --- a/Iceshrimp.Backend/Core/Services/NoteService.cs +++ b/Iceshrimp.Backend/Core/Services/NoteService.cs @@ -1450,7 +1450,7 @@ public class NoteService( // ReSharper disable once EntityFramework.UnsupportedServerSideFunctionCall var followingUser = await db.Users.FirstOrDefaultAsync(p => p.IsFollowing(user)); - var notes = await objectResolver.IterateCollectionAsync(collection) + var notes = await objectResolver.IterateCollection(collection) .Take(10) .Where(p => p.Id != null) .Select(p => ResolveNoteAsync(p.Id!, null, followingUser, true)) diff --git a/Iceshrimp.Backend/Core/Services/ObjectStorageService.cs b/Iceshrimp.Backend/Core/Services/ObjectStorageService.cs index 3b9504ef..01d3ff7f 100644 --- a/Iceshrimp.Backend/Core/Services/ObjectStorageService.cs +++ b/Iceshrimp.Backend/Core/Services/ObjectStorageService.cs @@ -1,4 +1,5 @@ using System.Collections.Immutable; +using System.Diagnostics.CodeAnalysis; using System.Net.Http.Headers; using System.Text; using Carbon.Storage; @@ -128,7 +129,8 @@ public class ObjectStorageService(IOptions config, HttpCl await _bucket.DeleteAsync(filenames.Select(GetKeyWithPrefix).ToImmutableList()); } - public async IAsyncEnumerable EnumerateFilesAsync() + [SuppressMessage("ReSharper", "InconsistentNaming")] + public async IAsyncEnumerable EnumerateFiles() { if (_bucket == null) throw new Exception("Refusing to enumerate files from object storage with invalid configuration"); diff --git a/Iceshrimp.Backend/Core/Services/StorageMaintenanceService.cs b/Iceshrimp.Backend/Core/Services/StorageMaintenanceService.cs index e1b8137c..8594b879 100644 --- a/Iceshrimp.Backend/Core/Services/StorageMaintenanceService.cs +++ b/Iceshrimp.Backend/Core/Services/StorageMaintenanceService.cs @@ -155,7 +155,7 @@ public class StorageMaintenanceService( var localFiles = driveSvc.GetAllFileNamesFromLocalStorage(); var objStorageFiles = await driveSvc.GetAllFileNamesFromObjectStorageAsync(); - await foreach (var file in query.AsChunkedAsyncEnumerableAsync(50, p => p.Id)) + await foreach (var file in query.AsChunkedAsyncEnumerable(50, p => p.Id)) { if (++progress % 500 == 0) logger.LogInformation("Validating files... ({idx}/{total})", progress, total); diff --git a/Iceshrimp.Backend/Core/Services/UserService.cs b/Iceshrimp.Backend/Core/Services/UserService.cs index 3cc5171a..5e007509 100644 --- a/Iceshrimp.Backend/Core/Services/UserService.cs +++ b/Iceshrimp.Backend/Core/Services/UserService.cs @@ -1384,8 +1384,7 @@ public class UserService( var followers = db.Followings .Where(p => p.Followee == source && p.Follower.IsLocalUser) .Select(p => p.Follower) - .AsChunkedAsyncEnumerableAsync(50, p => p.Id, - hook: p => p.PrecomputeRelationshipData(source)); + .AsChunkedAsyncEnumerable(50, p => p.Id, hook: p => p.PrecomputeRelationshipData(source)); await foreach (var follower in followers) { @@ -1413,8 +1412,7 @@ public class UserService( var following = db.Followings .Where(p => p.Follower == source) .Select(p => p.Follower) - .AsChunkedAsyncEnumerableAsync(50, p => p.Id, - hook: p => p.PrecomputeRelationshipData(source)); + .AsChunkedAsyncEnumerable(50, p => p.Id, hook: p => p.PrecomputeRelationshipData(source)); await foreach (var followee in following) { diff --git a/Iceshrimp.Backend/Core/Tasks/MediaCleanupTask.cs b/Iceshrimp.Backend/Core/Tasks/MediaCleanupTask.cs index 67d1a05f..d6475b33 100644 --- a/Iceshrimp.Backend/Core/Tasks/MediaCleanupTask.cs +++ b/Iceshrimp.Backend/Core/Tasks/MediaCleanupTask.cs @@ -34,7 +34,7 @@ public class MediaCleanupTask : ICronTask var cnt = await fileIds.CountAsync(); logger.LogInformation("Expiring {count} files...", cnt); - await foreach (var fileId in fileIds.AsChunkedAsyncEnumerableAsync(50, p => p)) + await foreach (var fileId in fileIds.AsChunkedAsyncEnumerable(50, p => p)) { await queueService.BackgroundTaskQueue.EnqueueAsync(new DriveFileDeleteJobData {