From c022397d863f603ee4afae344bc852fbc66db63e Mon Sep 17 00:00:00 2001 From: Stephan Date: Tue, 23 Jan 2018 20:54:47 +0100 Subject: [PATCH] U4-10846 - fix member group cache --- .../Repositories/MemberGroupRepository.cs | 25 +++++++++---------- .../Cache/MemberGroupCacheRefresher.cs | 7 +++--- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/Umbraco.Core/Persistence/Repositories/MemberGroupRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MemberGroupRepository.cs index c7e8a5c328..a477b6fd40 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MemberGroupRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MemberGroupRepository.cs @@ -131,18 +131,17 @@ namespace Umbraco.Core.Persistence.Repositories public IMemberGroup GetByName(string name) { - return IsolatedCache.GetCacheItem( - string.Format("{0}.{1}", typeof (IMemberGroup).FullName, name), - () => - { - var qry = new Query().Where(group => group.Name.Equals(name)); - var result = GetByQuery(qry); - return result.FirstOrDefault(); - }, - //cache for 5 mins since that is the default in the RuntimeCacheProvider - TimeSpan.FromMinutes(5), - //sliding is true - true); + // cannot use name in the cache key, 'cos when clearing the cache for a given + // member group that has been renamed, we clear the new name but not the old + // name - it just cannot work - and we cannot use the dirty props 'cos it won't + // work on distributed cache - and besides, we end up caching both by name and + // by id + // disabling the cache entirely for now - if we want to cache we'd need to + // implement some sort of cross-reference name/id cache + + var qry = new Query().Where(group => group.Name.Equals(name)); + var result = GetByQuery(qry); + return result.FirstOrDefault(); } public IMemberGroup CreateIfNotExists(string roleName) @@ -337,4 +336,4 @@ namespace Umbraco.Core.Persistence.Repositories /// internal static event TypedEventHandler> SavedMemberGroup; } -} \ No newline at end of file +} diff --git a/src/Umbraco.Web/Cache/MemberGroupCacheRefresher.cs b/src/Umbraco.Web/Cache/MemberGroupCacheRefresher.cs index 2d61b254a0..a27dca47ca 100644 --- a/src/Umbraco.Web/Cache/MemberGroupCacheRefresher.cs +++ b/src/Umbraco.Web/Cache/MemberGroupCacheRefresher.cs @@ -108,11 +108,10 @@ namespace Umbraco.Web.Cache { if (payload != null && memberGroupCache) { - memberGroupCache.Result.ClearCacheByKeySearch(string.Format("{0}.{1}", typeof(IMemberGroup).FullName, payload.Name)); memberGroupCache.Result.ClearCacheItem(RepositoryBase.GetCacheIdKey(payload.Id)); - } + } }); - + } } -} \ No newline at end of file +}