[release/2.2] Backport memory leak fix from 3.0 (#13840)

This commit is contained in:
Justin Kotalik 2019-10-02 08:06:56 +09:00 committed by Andrew Stanton-Nurse
parent 3bb7be15d8
commit 59bdc3449f
2 changed files with 7 additions and 4 deletions

View File

@ -78,6 +78,7 @@ Later on, this will be checked using this condition:
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(VersionPrefix)' == '2.2.8' "> <PropertyGroup Condition=" '$(VersionPrefix)' == '2.2.8' ">
<PackagesInPatch> <PackagesInPatch>
Microsoft.AspNetCore.DataProtection.EntityFrameworkCore;
</PackagesInPatch> </PackagesInPatch>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

View File

@ -42,8 +42,10 @@ namespace Microsoft.AspNetCore.DataProtection.EntityFrameworkCore
{ {
using (var scope = _services.CreateScope()) using (var scope = _services.CreateScope())
{ {
var context = scope.ServiceProvider.GetRequiredService<TContext>(); var context = scope.ServiceProvider.GetRequiredService<TContext>();
return context.DataProtectionKeys.AsNoTracking().Select(key => TryParseKeyXml(key.Xml)).ToList().AsReadOnly(); // Put logger in a local such that `this` isn't captured.
var logger = _logger;
return context.DataProtectionKeys.AsNoTracking().Select(key => TryParseKeyXml(key.Xml, logger)).ToList().AsReadOnly();
} }
} }
@ -65,7 +67,7 @@ namespace Microsoft.AspNetCore.DataProtection.EntityFrameworkCore
} }
} }
private XElement TryParseKeyXml(string xml) private static XElement TryParseKeyXml(string xml, ILogger logger)
{ {
try try
{ {
@ -73,7 +75,7 @@ namespace Microsoft.AspNetCore.DataProtection.EntityFrameworkCore
} }
catch (Exception e) catch (Exception e)
{ {
_logger?.LogExceptionWhileParsingKeyXml(xml, e); logger?.LogExceptionWhileParsingKeyXml(xml, e);
return null; return null;
} }
} }