From 75b40e79a2b46cd84b105e849bf804ce1ef27113 Mon Sep 17 00:00:00 2001 From: Mole Date: Wed, 26 Nov 2025 15:02:07 +0100 Subject: [PATCH] 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 eaf5960a4dec09dd8a315942e06dd2b04956ff48) --- .../Cache/Refreshers/Implement/ContentCacheRefresher.cs | 4 ++-- .../Cache/Refreshers/Implement/ContentTypeCacheRefresher.cs | 4 ++-- .../Cache/Refreshers/Implement/DataTypeCacheRefresher.cs | 2 +- .../Cache/Refreshers/Implement/MediaCacheRefresher.cs | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Umbraco.Core/Cache/Refreshers/Implement/ContentCacheRefresher.cs b/src/Umbraco.Core/Cache/Refreshers/Implement/ContentCacheRefresher.cs index 7505781ad9..c58e689a67 100644 --- a/src/Umbraco.Core/Cache/Refreshers/Implement/ContentCacheRefresher.cs +++ b/src/Umbraco.Core/Cache/Refreshers/Implement/ContentCacheRefresher.cs @@ -239,8 +239,8 @@ public sealed class ContentCacheRefresher : PayloadCacheRefresherBase documentTypeIds = payloads.Where(x => x.ItemType == nameof(IContentType)).Select(x => x.Id); IEnumerable 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 diff --git a/src/Umbraco.Core/Cache/Refreshers/Implement/DataTypeCacheRefresher.cs b/src/Umbraco.Core/Cache/Refreshers/Implement/DataTypeCacheRefresher.cs index 101be3d0ac..dcc53e37f3 100644 --- a/src/Umbraco.Core/Cache/Refreshers/Implement/DataTypeCacheRefresher.cs +++ b/src/Umbraco.Core/Cache/Refreshers/Implement/DataTypeCacheRefresher.cs @@ -120,7 +120,7 @@ public sealed class DataTypeCacheRefresher : PayloadCacheRefresherBase mediaTypeIds = removedContentTypes .Where(x => x.ItemType == PublishedItemType.Media) .Select(x => x.Id); - _mediaCacheService.RebuildMemoryCacheByContentTypeAsync(mediaTypeIds); + _mediaCacheService.RebuildMemoryCacheByContentTypeAsync(mediaTypeIds).GetAwaiter().GetResult(); }); base.Refresh(payloads); } diff --git a/src/Umbraco.Core/Cache/Refreshers/Implement/MediaCacheRefresher.cs b/src/Umbraco.Core/Cache/Refreshers/Implement/MediaCacheRefresher.cs index 45af4d2c8f..f54c78de1b 100644 --- a/src/Umbraco.Core/Cache/Refreshers/Implement/MediaCacheRefresher.cs +++ b/src/Umbraco.Core/Cache/Refreshers/Implement/MediaCacheRefresher.cs @@ -194,8 +194,8 @@ public sealed class MediaCacheRefresher : PayloadCacheRefresherBase