From 0bd830e5635a24e706c26de09a5330d9a85960bd Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Wed, 29 Jun 2022 15:15:31 +0300 Subject: [PATCH] Docs: Fix concurrency exception --- .../Volo/Docs/Documents/DocumentAppService.cs | 3 +-- .../Volo/Docs/Documents/IDocumentRepository.cs | 1 + .../Volo/Docs/Documents/EFCoreDocumentRepository.cs | 4 ++-- .../Volo/Docs/Documents/MongoDocumentRepository.cs | 5 ++--- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/DocumentAppService.cs b/modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/DocumentAppService.cs index 570c8590b0..228648f2fb 100644 --- a/modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/DocumentAppService.cs +++ b/modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/DocumentAppService.cs @@ -404,8 +404,7 @@ namespace Volo.Docs.Documents var sourceDocument = await source.GetDocumentAsync(project, documentName, languageCode, version, oldDocument?.LastSignificantUpdateTime); - await _documentRepository.DeleteAsync(project.Id, sourceDocument.Name, sourceDocument.LanguageCode, - sourceDocument.Version); + await _documentRepository.DeleteAsync(project.Id, sourceDocument.Name, sourceDocument.LanguageCode, sourceDocument.Version, autoSave: true); await _documentRepository.InsertAsync(sourceDocument, true); Logger.LogInformation($"Document retrieved: {documentName}"); diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/IDocumentRepository.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/IDocumentRepository.cs index 6b911c6e36..740d6921b3 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/IDocumentRepository.cs +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/IDocumentRepository.cs @@ -23,6 +23,7 @@ namespace Volo.Docs.Documents string name, string languageCode, string version, + bool autoSave = false, CancellationToken cancellationToken = default); Task> GetListAsync( diff --git a/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/Documents/EFCoreDocumentRepository.cs b/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/Documents/EFCoreDocumentRepository.cs index d1d78cc24a..7656975f16 100644 --- a/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/Documents/EFCoreDocumentRepository.cs +++ b/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/Documents/EFCoreDocumentRepository.cs @@ -141,11 +141,11 @@ namespace Volo.Docs.Documents GetCancellationToken(cancellationToken)); } - public async Task DeleteAsync(Guid projectId, string name, string languageCode, string version, CancellationToken cancellationToken = default) + public async Task DeleteAsync(Guid projectId, string name, string languageCode, string version, bool autoSave = false, CancellationToken cancellationToken = default) { await DeleteAsync(x => x.ProjectId == projectId && x.Name == name && x.LanguageCode == languageCode && - x.Version == version, cancellationToken: cancellationToken); + x.Version == version, autoSave, cancellationToken: cancellationToken); } public async Task GetAsync(Guid id, CancellationToken cancellationToken = default) diff --git a/modules/docs/src/Volo.Docs.MongoDB/Volo/Docs/Documents/MongoDocumentRepository.cs b/modules/docs/src/Volo.Docs.MongoDB/Volo/Docs/Documents/MongoDocumentRepository.cs index c812947388..0086624d43 100644 --- a/modules/docs/src/Volo.Docs.MongoDB/Volo/Docs/Documents/MongoDocumentRepository.cs +++ b/modules/docs/src/Volo.Docs.MongoDB/Volo/Docs/Documents/MongoDocumentRepository.cs @@ -49,12 +49,11 @@ namespace Volo.Docs.Documents x.Version == version, GetCancellationToken(cancellationToken)); } - public async Task DeleteAsync(Guid projectId, string name, string languageCode, string version, - CancellationToken cancellationToken = default) + public async Task DeleteAsync(Guid projectId, string name, string languageCode, string version, bool autoSave = false, CancellationToken cancellationToken = default) { await DeleteAsync(x => x.ProjectId == projectId && x.Name == name && x.LanguageCode == languageCode && - x.Version == version, cancellationToken: cancellationToken); + x.Version == version, autoSave, cancellationToken: cancellationToken); } public async Task> GetListAsync(Guid? projectId, string version, string name, CancellationToken cancellationToken = default)