From 8fb26884ccd84d08fe57362f182c03456d3e94f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20J=C3=B8rgen=20Skogstad?= Date: Tue, 26 Nov 2024 11:48:06 +0100 Subject: [PATCH] gp --- .../AltinnAuthorizationClient.cs | 26 ++++++++++++------- .../InfrastructureExtensions.cs | 2 ++ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/Digdir.Domain.Dialogporten.Infrastructure/Altinn/Authorization/AltinnAuthorizationClient.cs b/src/Digdir.Domain.Dialogporten.Infrastructure/Altinn/Authorization/AltinnAuthorizationClient.cs index a6d7687ce..b05cf9a15 100644 --- a/src/Digdir.Domain.Dialogporten.Infrastructure/Altinn/Authorization/AltinnAuthorizationClient.cs +++ b/src/Digdir.Domain.Dialogporten.Infrastructure/Altinn/Authorization/AltinnAuthorizationClient.cs @@ -88,19 +88,25 @@ public async Task GetAuthorizedParties(IPartyIdentifier var authorizedParties = await _partiesCache.GetOrSetAsync(cacheKey, async token => await PerformAuthorizedPartiesRequest(authorizedPartiesRequest, token), token: cancellationToken); - var mcaField = typeof(FusionCache).GetField("_mca", BindingFlags.NonPublic | BindingFlags.Instance); - var mcaValue = mcaField?.GetValue(_partiesCache); - var mcField = mcaValue!.GetType().GetField("_cache", BindingFlags.NonPublic | BindingFlags.Instance); - var mcValue = mcField?.GetValue(mcaValue) as IMemoryCache; - - var inMemoryCacheValue = mcValue!.TryGetValue(cacheKey, out var inMemoryCacheEntry); - var inMemoryCacheEntryValue = inMemoryCacheEntry?.GetType().GetProperty("Value")?.GetValue(inMemoryCacheEntry); + // Testing https://github.com/digdir/dialogporten/issues/1226 + try + { + var mcaField = typeof(FusionCache).GetField("_mca", BindingFlags.NonPublic | BindingFlags.Instance); + var mcaValue = mcaField?.GetValue(_partiesCache); + var mcField = mcaValue!.GetType().GetField("_cache", BindingFlags.NonPublic | BindingFlags.Instance); + var mcValue = mcField?.GetValue(mcaValue) as IMemoryCache; - _logger.LogInformation("In memory cache value for {CacheKey}, success: {InMemoryCacheValue} value: {@inMemoryCacheEntryValue}", - cacheKey, inMemoryCacheValue, inMemoryCacheEntryValue); + var inMemoryCacheValue = mcValue!.TryGetValue(cacheKey, out var inMemoryCacheEntry); + var inMemoryCacheEntryValue = inMemoryCacheEntry?.GetType().GetProperty("Value")?.GetValue(inMemoryCacheEntry); + _logger.LogInformation("In memory cache value for {CacheKey}, success: {InMemoryCacheValue} value: {@inMemoryCacheEntryValue}", + cacheKey, inMemoryCacheValue, inMemoryCacheEntryValue); + } + catch (Exception e) + { + _logger.LogError(e, "Failed to reflect on FusionCache MemoryCache"); + } - // Temporary logging to debug missing authorized sub parties _logger.LogInformation("Authorized parties for {Party}: {@AuthorizedParties}", authenticatedParty, authorizedParties); return flatten ? GetFlattenedAuthorizedParties(authorizedParties) : authorizedParties; diff --git a/src/Digdir.Domain.Dialogporten.Infrastructure/InfrastructureExtensions.cs b/src/Digdir.Domain.Dialogporten.Infrastructure/InfrastructureExtensions.cs index bc18a7e63..345868920 100644 --- a/src/Digdir.Domain.Dialogporten.Infrastructure/InfrastructureExtensions.cs +++ b/src/Digdir.Domain.Dialogporten.Infrastructure/InfrastructureExtensions.cs @@ -146,6 +146,8 @@ internal static void AddInfrastructure_Internal(InfrastructureBuilderContext bui }) .ConfigureFusionCache(nameof(AuthorizedPartiesResult), new() { + // Testing https://github.com/digdir/dialogporten/issues/1226 + SkipMemoryCache = true, // We keep authorized parties in a separate cache key, as this originates from a different API // and has lees cardinality than the dialog authorization cache (only one per user). We therefore // allow a memory cache for this.