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

* Await rebuilds and fix multiple open DataReaders

* Add additional missing awaits

(cherry picked from commit eaf5960a4d)
This commit is contained in:
Mole
2025-11-26 15:02:07 +01:00
committed by mole
parent 1c4b4c90c9
commit 75b40e79a2
4 changed files with 7 additions and 7 deletions

View File

@@ -239,8 +239,8 @@ public sealed class ContentCacheRefresher : PayloadCacheRefresherBase<ContentCac
if (payload.ChangeTypes.HasType(TreeChangeTypes.RefreshAll))
{
_documentNavigationManagementService.RebuildAsync();
_documentNavigationManagementService.RebuildBinAsync();
_documentNavigationManagementService.RebuildAsync().GetAwaiter().GetResult();
_documentNavigationManagementService.RebuildBinAsync().GetAwaiter().GetResult();
}
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> mediaTypeIds = payloads.Where(x => x.ItemType == nameof(IMediaType)).Select(x => x.Id);
_documentCacheService.RebuildMemoryCacheByContentTypeAsync(documentTypeIds);
_mediaCacheService.RebuildMemoryCacheByContentTypeAsync(mediaTypeIds);
_documentCacheService.RebuildMemoryCacheByContentTypeAsync(documentTypeIds).GetAwaiter().GetResult();
_mediaCacheService.RebuildMemoryCacheByContentTypeAsync(mediaTypeIds).GetAwaiter().GetResult();
});
// now we can trigger the event

View File

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

View File

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