@@ -50,10 +50,10 @@ public static ICacheQueryResult<TResult> GetOrSet<TEntity, TResult>(
5050 Guard . NotEmpty ( key , nameof ( key ) ) ;
5151 Guard . NotNull ( logger , nameof ( logger ) ) ;
5252
53- var hashedKey = FormatHashedKey < TEntity > ( cacheProvider , key ) ;
53+ var hashedKey = FormatHashedKey < TEntity > ( cacheProvider , key , logger ) ;
5454 var cacheUsed = false ;
5555
56- if ( ! cacheProvider . TryGetValue < TResult > ( hashedKey , out var value ) )
56+ if ( cacheProvider . TryGetValue < TResult > ( hashedKey , logger , out var value ) == false )
5757 {
5858 var expiry = cacheProvider . Expiry ;
5959
@@ -93,10 +93,10 @@ public static ICachePagedQueryResult<TResult> GetOrSet<TEntity, TResult>(
9393 Guard . NotNull ( getter , nameof ( getter ) ) ;
9494 Guard . NotNull ( logger , nameof ( logger ) ) ;
9595
96- var hashedKey = FormatHashedKey < TEntity > ( cacheProvider , key ) ;
96+ var hashedKey = FormatHashedKey < TEntity > ( cacheProvider , key , logger ) ;
9797 var cacheUsed = false ;
9898
99- if ( ! cacheProvider . TryGetValue < PagedQueryResult < TResult > > ( hashedKey , out var value ) )
99+ if ( cacheProvider . TryGetValue < PagedQueryResult < TResult > > ( hashedKey , logger , out var value ) == false )
100100 {
101101 var expiry = cacheProvider . Expiry ;
102102
@@ -136,10 +136,10 @@ public static async Task<ICacheQueryResult<TResult>> GetOrSetAsync<TEntity, TRes
136136 Guard . NotNull ( getter , nameof ( getter ) ) ;
137137 Guard . NotNull ( logger , nameof ( logger ) ) ;
138138
139- var hashedKey = FormatHashedKey < TEntity > ( cacheProvider , key ) ;
139+ var hashedKey = FormatHashedKey < TEntity > ( cacheProvider , key , logger ) ;
140140 var cacheUsed = false ;
141141
142- if ( ! cacheProvider . TryGetValue < TResult > ( hashedKey , out var value ) )
142+ if ( cacheProvider . TryGetValue < TResult > ( hashedKey , logger , out var value ) == false )
143143 {
144144 var expiry = cacheProvider . Expiry ;
145145
@@ -179,10 +179,10 @@ public static async Task<ICachePagedQueryResult<TResult>> GetOrSetAsync<TEntity,
179179 Guard . NotNull ( getter , nameof ( getter ) ) ;
180180 Guard . NotNull ( logger , nameof ( logger ) ) ;
181181
182- var hashedKey = FormatHashedKey < TEntity > ( cacheProvider , key ) ;
182+ var hashedKey = FormatHashedKey < TEntity > ( cacheProvider , key , logger ) ;
183183 var cacheUsed = false ;
184184
185- if ( ! cacheProvider . TryGetValue < PagedQueryResult < TResult > > ( hashedKey , out var value ) )
185+ if ( cacheProvider . TryGetValue < PagedQueryResult < TResult > > ( hashedKey , logger , out var value ) == false )
186186 {
187187 var expiry = cacheProvider . Expiry ;
188188
@@ -453,35 +453,56 @@ private static void SetValue<T>(
453453
454454 lock ( _syncRoot )
455455 {
456- logger . Debug ( expiry . HasValue
456+ try
457+ {
458+ cacheProvider . Cache . Set < T > (
459+ hashedKey ,
460+ value ,
461+ expiry ,
462+ reason => logger . Debug ( $ "Cache for '{ hashedKey } ' has expired. Evicting from cache for '{ reason } '") ) ;
463+
464+ logger . Debug ( expiry . HasValue
457465 ? $ "Setting up cache for '{ hashedKey } ' expire handling in { expiry . Value . TotalSeconds } seconds"
458466 : $ "Setting up cache for '{ hashedKey } '") ;
459-
460- cacheProvider . Cache . Set < T > (
461- hashedKey ,
462- value ,
463- expiry ,
464- reason => logger . Debug ( $ "Cache for '{ hashedKey } ' has expired. Evicting from cache for '{ reason } '") ) ;
467+ }
468+ catch ( Exception ex )
469+ {
470+ logger . Error ( ex , $ "Unable to set cache value for '{ hashedKey } '") ;
471+ }
465472 }
466473 }
467474
468- private static bool TryGetValue < T > ( [ NotNull ] this ICacheProvider cacheProvider , [ NotNull ] string key , out T value )
475+ private static bool ? TryGetValue < T > ( [ NotNull ] this ICacheProvider cacheProvider , [ NotNull ] string key , [ NotNull ] ILogger logger , out T value )
469476 {
470477 Guard . NotNull ( cacheProvider , nameof ( cacheProvider ) ) ;
471- Guard . NotEmpty ( key , nameof ( key ) ) ;
472478 Guard . EnsureNotNull ( cacheProvider . Cache , "The caching cannot be null." ) ;
479+ Guard . NotEmpty ( key , nameof ( key ) ) ;
480+ Guard . NotNull ( logger , nameof ( logger ) ) ;
473481
474482 lock ( _syncRoot )
475483 {
476- return cacheProvider . Cache . TryGetValue < T > ( key , out value ) ;
484+ bool ? result = null ;
485+ value = default ( T ) ;
486+
487+ try
488+ {
489+ result = cacheProvider . Cache . TryGetValue < T > ( key , out value ) ;
490+ }
491+ catch ( Exception ex )
492+ {
493+ logger . Error ( ex , $ "Unable to get cache value for '{ key } '") ;
494+ }
495+
496+ return result ;
477497 }
478498 }
479499
480- private static int GetCachingPrefixCounter < T > ( [ NotNull ] this ICacheProvider cacheProvider )
500+ private static int GetCachingPrefixCounter < T > ( [ NotNull ] this ICacheProvider cacheProvider , [ NotNull ] ILogger logger )
481501 {
482502 Guard . NotNull ( cacheProvider , nameof ( cacheProvider ) ) ;
503+ Guard . NotNull ( logger , nameof ( logger ) ) ;
483504
484- return ! cacheProvider . TryGetValue < int > ( FormatCachePrefixCounterKey < T > ( ) , out var key ) ? 1 : key ;
505+ return cacheProvider . TryGetValue < int > ( FormatCachePrefixCounterKey < T > ( ) , logger , out var key ) == true ? key : 1 ;
485506 }
486507
487508 private static string FormatCachePrefixCounterKey < T > ( )
@@ -492,16 +513,17 @@ private static string FormatCachePrefixCounterKey<T>()
492513 CacheCounterPrefix ) ;
493514 }
494515
495- private static string FormatHashedKey < T > ( [ NotNull ] this ICacheProvider cacheProvider , [ NotNull ] string key )
516+ private static string FormatHashedKey < T > ( [ NotNull ] this ICacheProvider cacheProvider , [ NotNull ] string key , [ NotNull ] ILogger logger )
496517 {
497518 Guard . NotNull ( cacheProvider , nameof ( cacheProvider ) ) ;
498519 Guard . NotEmpty ( key , nameof ( key ) ) ;
520+ Guard . NotNull ( logger , nameof ( logger ) ) ;
499521
500522 var cacheKeyTransformer = cacheProvider . KeyTransformer ?? new DefaultCacheKeyTransformer ( ) ;
501523
502524 return string . Format ( "{1}{0}{2}{0}{3}" ,
503525 CachePrefixGlue ,
504- cacheProvider . GetCachingPrefixCounter < T > ( ) ,
526+ cacheProvider . GetCachingPrefixCounter < T > ( logger ) ,
505527 cacheKeyTransformer . Transform ( key ) ,
506528 CachePrefix ) ;
507529 }
0 commit comments