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:
@@ -239,8 +239,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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|||||||
Reference in New Issue
Block a user