Cache: Add awaits to memory cache rebuilds to fix race conditions (#20960)

* Await rebuilds and fix multiple open DataReaders

* Add additional missing awaits
This commit is contained in:
Mole
2025-11-26 15:02:07 +01:00
committed by GitHub
parent ff8cbb8b81
commit eaf5960a4d
4 changed files with 7 additions and 7 deletions

View File

@@ -265,8 +265,8 @@ public sealed class ContentCacheRefresher : PayloadCacheRefresherBase<ContentCac
if (payload.ChangeTypes.HasType(TreeChangeTypes.RefreshAll)) if (payload.ChangeTypes.HasType(TreeChangeTypes.RefreshAll))
{ {
_documentNavigationManagementService.RebuildAsync(); _documentNavigationManagementService.RebuildAsync().GetAwaiter().GetResult();
_documentNavigationManagementService.RebuildBinAsync(); _documentNavigationManagementService.RebuildBinAsync().GetAwaiter().GetResult();
} }
if (payload.Key is null) if (payload.Key is null)

View File

@@ -136,8 +136,8 @@ public sealed class ContentTypeCacheRefresher : PayloadCacheRefresherBase<Conten
IEnumerable<int> documentTypeIds = payloads.Where(x => x.ItemType == nameof(IContentType)).Select(x => x.Id); IEnumerable<int> documentTypeIds = payloads.Where(x => x.ItemType == nameof(IContentType)).Select(x => x.Id);
IEnumerable<int> mediaTypeIds = payloads.Where(x => x.ItemType == nameof(IMediaType)).Select(x => x.Id); IEnumerable<int> mediaTypeIds = payloads.Where(x => x.ItemType == nameof(IMediaType)).Select(x => x.Id);
_documentCacheService.RebuildMemoryCacheByContentTypeAsync(documentTypeIds); _documentCacheService.RebuildMemoryCacheByContentTypeAsync(documentTypeIds).GetAwaiter().GetResult();
_mediaCacheService.RebuildMemoryCacheByContentTypeAsync(mediaTypeIds); _mediaCacheService.RebuildMemoryCacheByContentTypeAsync(mediaTypeIds).GetAwaiter().GetResult();
}); });
// now we can trigger the event // now we can trigger the event

View File

@@ -120,7 +120,7 @@ public sealed class DataTypeCacheRefresher : PayloadCacheRefresherBase<DataTypeC
IEnumerable<int> mediaTypeIds = removedContentTypes IEnumerable<int> mediaTypeIds = removedContentTypes
.Where(x => x.ItemType == PublishedItemType.Media) .Where(x => x.ItemType == PublishedItemType.Media)
.Select(x => x.Id); .Select(x => x.Id);
_mediaCacheService.RebuildMemoryCacheByContentTypeAsync(mediaTypeIds); _mediaCacheService.RebuildMemoryCacheByContentTypeAsync(mediaTypeIds).GetAwaiter().GetResult();
}); });
base.Refresh(payloads); base.Refresh(payloads);
} }

View File

@@ -194,8 +194,8 @@ public sealed class MediaCacheRefresher : PayloadCacheRefresherBase<MediaCacheRe
if (payload.ChangeTypes.HasType(TreeChangeTypes.RefreshAll)) if (payload.ChangeTypes.HasType(TreeChangeTypes.RefreshAll))
{ {
_mediaNavigationManagementService.RebuildAsync(); _mediaNavigationManagementService.RebuildAsync().GetAwaiter().GetResult();
_mediaNavigationManagementService.RebuildBinAsync(); _mediaNavigationManagementService.RebuildBinAsync().GetAwaiter().GetResult();
} }
if (payload.ChangeTypes.HasType(TreeChangeTypes.RefreshNode)) if (payload.ChangeTypes.HasType(TreeChangeTypes.RefreshNode))