Browse Source

Docs: Fix concurrency exception

pull/13175/head
Engincan VESKE 4 years ago
parent
commit
0bd830e563
  1. 3
      modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/DocumentAppService.cs
  2. 1
      modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/IDocumentRepository.cs
  3. 4
      modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/Documents/EFCoreDocumentRepository.cs
  4. 5
      modules/docs/src/Volo.Docs.MongoDB/Volo/Docs/Documents/MongoDocumentRepository.cs

3
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}");

1
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<List<Document>> GetListAsync(

4
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<Document> GetAsync(Guid id, CancellationToken cancellationToken = default)

5
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<List<Document>> GetListAsync(Guid? projectId, string version, string name, CancellationToken cancellationToken = default)

Loading…
Cancel
Save