Skip to content

Commit 59bdc34

Browse files
jkotalikanalogrelay
authored andcommitted
[release/2.2] Backport memory leak fix from 3.0 (#13840)
1 parent 3bb7be1 commit 59bdc34

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

eng/PatchConfig.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ Later on, this will be checked using this condition:
7878
</PropertyGroup>
7979
<PropertyGroup Condition=" '$(VersionPrefix)' == '2.2.8' ">
8080
<PackagesInPatch>
81+
Microsoft.AspNetCore.DataProtection.EntityFrameworkCore;
8182
</PackagesInPatch>
8283
</PropertyGroup>
8384
</Project>

src/DataProtection/EntityFrameworkCore/src/EntityFrameworkCoreXmlRepository.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,10 @@ public virtual IReadOnlyCollection<XElement> GetAllElements()
4242
{
4343
using (var scope = _services.CreateScope())
4444
{
45-
var context = scope.ServiceProvider.GetRequiredService<TContext>();
46-
return context.DataProtectionKeys.AsNoTracking().Select(key => TryParseKeyXml(key.Xml)).ToList().AsReadOnly();
45+
var context = scope.ServiceProvider.GetRequiredService<TContext>();
46+
// Put logger in a local such that `this` isn't captured.
47+
var logger = _logger;
48+
return context.DataProtectionKeys.AsNoTracking().Select(key => TryParseKeyXml(key.Xml, logger)).ToList().AsReadOnly();
4749
}
4850
}
4951

@@ -65,15 +67,15 @@ public void StoreElement(XElement element, string friendlyName)
6567
}
6668
}
6769

68-
private XElement TryParseKeyXml(string xml)
70+
private static XElement TryParseKeyXml(string xml, ILogger logger)
6971
{
7072
try
7173
{
7274
return XElement.Parse(xml);
7375
}
7476
catch (Exception e)
7577
{
76-
_logger?.LogExceptionWhileParsingKeyXml(xml, e);
78+
logger?.LogExceptionWhileParsingKeyXml(xml, e);
7779
return null;
7880
}
7981
}

0 commit comments

Comments
 (0)