diff --git a/backend/src/Migrations/Migrations/ConvertEventStore.cs b/backend/src/Migrations/Migrations/ConvertEventStore.cs index 82e074e90..c0060d63e 100644 --- a/backend/src/Migrations/Migrations/ConvertEventStore.cs +++ b/backend/src/Migrations/Migrations/ConvertEventStore.cs @@ -33,6 +33,10 @@ namespace Migrations.Migrations var filter = Builders.Filter; var writes = new List>(); + var writeOptions = new BulkWriteOptions + { + IsOrdered = false + }; async Task WriteAsync(WriteModel? model, bool force) { @@ -43,7 +47,7 @@ namespace Migrations.Migrations if (writes.Count == 1000 || (force && writes.Count > 0)) { - await collection.BulkWriteAsync(writes, cancellationToken: ct); + await collection.BulkWriteAsync(writes, writeOptions, ct); writes.Clear(); } diff --git a/backend/src/Migrations/Migrations/ConvertEventStoreAppId.cs b/backend/src/Migrations/Migrations/ConvertEventStoreAppId.cs index 8c73ff9c1..12918d389 100644 --- a/backend/src/Migrations/Migrations/ConvertEventStoreAppId.cs +++ b/backend/src/Migrations/Migrations/ConvertEventStoreAppId.cs @@ -32,23 +32,28 @@ namespace Migrations.Migrations { var collection = mongoEventStore.RawCollection; - var filterer = Builders.Filter; - var updater = Builders.Update; + var filter = Builders.Filter; - var writesBatches = new List>(); + var updates = Builders.Update; + + var writes = new List>(); + var writeOptions = new BulkWriteOptions + { + IsOrdered = false + }; async Task WriteAsync(WriteModel? model, bool force) { if (model != null) { - writesBatches.Add(model); + writes.Add(model); } - if (writesBatches.Count == 1000 || (force && writesBatches.Count > 0)) + if (writes.Count == 1000 || (force && writes.Count > 0)) { - await collection.BulkWriteAsync(writesBatches, cancellationToken: ct); + await collection.BulkWriteAsync(writes, writeOptions, ct); - writesBatches.Clear(); + writes.Clear(); } } @@ -66,11 +71,11 @@ namespace Migrations.Migrations { var appId = NamedId.Parse(appIdValue.AsString, Guid.TryParse).Id.ToString(); - var eventUpdate = updater.Set($"Events.{index}.Metadata.AppId", appId); + var eventUpdate = updates.Set($"Events.{index}.Metadata.AppId", appId); if (update != null) { - update = updater.Combine(update, eventUpdate); + update = updates.Combine(update, eventUpdate); } else { @@ -83,7 +88,7 @@ namespace Migrations.Migrations if (update != null) { - var write = new UpdateOneModel(filterer.Eq("_id", commit["_id"].AsString), update); + var write = new UpdateOneModel(filter.Eq("_id", commit["_id"].AsString), update); await WriteAsync(write, false); } diff --git a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetFolderRepository_SnapshotStore.cs b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetFolderRepository_SnapshotStore.cs index 71f3c53c2..1a559b4f1 100644 --- a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetFolderRepository_SnapshotStore.cs +++ b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetFolderRepository_SnapshotStore.cs @@ -67,7 +67,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets return; } - await Collection.BulkWriteAsync(updates); + await Collection.BulkWriteAsync(updates, BulkUnordered); } } diff --git a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetRepository_SnapshotStore.cs b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetRepository_SnapshotStore.cs index a4af16806..6083f086f 100644 --- a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetRepository_SnapshotStore.cs +++ b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetRepository_SnapshotStore.cs @@ -67,7 +67,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets return; } - await Collection.BulkWriteAsync(updates); + await Collection.BulkWriteAsync(updates, BulkUnordered); } } diff --git a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentCollection.cs b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentCollection.cs index d41b074c5..894f90789 100644 --- a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentCollection.cs +++ b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentCollection.cs @@ -223,7 +223,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents IsUpsert = true }).ToList(); - return Collection.BulkWriteAsync(writes); + return Collection.BulkWriteAsync(writes, BulkUnordered); } } } diff --git a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/FullText/MongoTextIndex.cs b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/FullText/MongoTextIndex.cs index e5ec59318..43779a8ee 100644 --- a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/FullText/MongoTextIndex.cs +++ b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/FullText/MongoTextIndex.cs @@ -76,7 +76,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.FullText return Task.CompletedTask; } - return Collection.BulkWriteAsync(writes); + return Collection.BulkWriteAsync(writes, BulkUnordered); } public async Task?> SearchAsync(IAppEntity app, GeoQuery query, SearchScope scope) diff --git a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/FullText/MongoTextIndexerState.cs b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/FullText/MongoTextIndexerState.cs index 725d4055e..a59e40ab3 100644 --- a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/FullText/MongoTextIndexerState.cs +++ b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/FullText/MongoTextIndexerState.cs @@ -80,7 +80,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.FullText return Task.CompletedTask; } - return Collection.BulkWriteAsync(writes); + return Collection.BulkWriteAsync(writes, BulkUnordered); } } -} \ No newline at end of file +} diff --git a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/History/MongoHistoryEventRepository.cs b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/History/MongoHistoryEventRepository.cs index f861e946e..1fd489164 100644 --- a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/History/MongoHistoryEventRepository.cs +++ b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/History/MongoHistoryEventRepository.cs @@ -72,7 +72,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.History } } - public async Task InsertManyAsync(IEnumerable historyEvents) + public Task InsertManyAsync(IEnumerable historyEvents) { var writes = historyEvents .Select(x => @@ -82,10 +82,12 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.History }) .ToList(); - if (writes.Count > 0) + if (writes.Count == 0) { - await Collection.BulkWriteAsync(writes); + return Task.CompletedTask; } + + return Collection.BulkWriteAsync(writes, BulkUnordered); } } } diff --git a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Schemas/MongoSchemasHash.cs b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Schemas/MongoSchemasHash.cs index e21c66346..dd6f428b3 100644 --- a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Schemas/MongoSchemasHash.cs +++ b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Schemas/MongoSchemasHash.cs @@ -82,7 +82,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Schemas return Task.CompletedTask; } - return Collection.BulkWriteAsync(writes); + return Collection.BulkWriteAsync(writes, BulkUnordered); } public async Task<(Instant Create, string Hash)> GetCurrentHashAsync(IAppEntity app) diff --git a/backend/src/Squidex.Infrastructure.MongoDb/UsageTracking/MongoUsageRepository.cs b/backend/src/Squidex.Infrastructure.MongoDb/UsageTracking/MongoUsageRepository.cs index 4837cf42f..24b59b801 100644 --- a/backend/src/Squidex.Infrastructure.MongoDb/UsageTracking/MongoUsageRepository.cs +++ b/backend/src/Squidex.Infrastructure.MongoDb/UsageTracking/MongoUsageRepository.cs @@ -17,8 +17,6 @@ namespace Squidex.Infrastructure.UsageTracking { public sealed class MongoUsageRepository : MongoRepositoryBase, IUsageRepository { - private static readonly BulkWriteOptions Unordered = new BulkWriteOptions { IsOrdered = false }; - public MongoUsageRepository(IMongoDatabase database) : base(database) { @@ -75,7 +73,7 @@ namespace Squidex.Infrastructure.UsageTracking } } - await Collection.BulkWriteAsync(writes, Unordered); + await Collection.BulkWriteAsync(writes, BulkUnordered); } } diff --git a/backend/src/Squidex/Squidex.csproj b/backend/src/Squidex/Squidex.csproj index e69e1e1d6..70f7a32da 100644 --- a/backend/src/Squidex/Squidex.csproj +++ b/backend/src/Squidex/Squidex.csproj @@ -58,8 +58,8 @@ - - + +