using Umbraco.Cms.Core; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Notifications; using Umbraco.Cms.Core.PublishedCache; using Umbraco.Cms.Core.Services; namespace Umbraco.Cms.Infrastructure.HybridCache.NotificationHandlers; /// /// Rebuilds the database cache if required when the serializer changes /// public class HybridCacheStartupNotificationHandler : INotificationAsyncHandler { private readonly IDatabaseCacheRebuilder _databaseCacheRebuilder; private readonly IRuntimeState _runtimeState; public HybridCacheStartupNotificationHandler(IDatabaseCacheRebuilder databaseCacheRebuilder, IRuntimeState runtimeState) { _databaseCacheRebuilder = databaseCacheRebuilder; _runtimeState = runtimeState; } public async Task HandleAsync(UmbracoApplicationStartingNotification notification, CancellationToken cancellationToken) { if (_runtimeState.Level <= RuntimeLevel.Install) { return; } await _databaseCacheRebuilder.RebuildDatabaseCacheIfSerializerChangedAsync(); } }