Skip to content

Commit 610011d

Browse files
committed
Adding logging to identify when shared assemblies are resolved from providers
1 parent 11b9c3e commit 610011d

File tree

6 files changed

+17
-10
lines changed

6 files changed

+17
-10
lines changed

src/WebJobs.Script/Description/DotNet/DirectSharedAssemblyProvider.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Reflection;
66
using System.Runtime.Loader;
77
using Microsoft.Azure.WebJobs.Host;
8+
using Microsoft.Extensions.Logging;
89

910
namespace Microsoft.Azure.WebJobs.Script.Description
1011
{
@@ -17,10 +18,12 @@ public DirectSharedAssemblyProvider(Assembly assembly)
1718
_assembly = assembly;
1819
}
1920

20-
public bool TryResolveAssembly(string assemblyName, AssemblyLoadContext targetContext, out Assembly assembly)
21+
public bool TryResolveAssembly(string assemblyName, AssemblyLoadContext targetContext, ILogger logger, out Assembly assembly)
2122
{
2223
if (string.Compare(AssemblyNameCache.GetName(_assembly).Name, assemblyName, StringComparison.OrdinalIgnoreCase) == 0)
2324
{
25+
logger.LogInformation($"{nameof(DirectSharedAssemblyProvider)} resolved shared assembly '{assemblyName}'");
26+
2427
assembly = _assembly;
2528
return true;
2629
}

src/WebJobs.Script/Description/DotNet/ExtensionSharedAssemblyProvider.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using System.Runtime.Loader;
88
using Microsoft.Azure.WebJobs.Host;
99
using Microsoft.Azure.WebJobs.Script.Extensibility;
10+
using Microsoft.Extensions.Logging;
1011

1112
namespace Microsoft.Azure.WebJobs.Script.Description
1213
{
@@ -27,7 +28,7 @@ public ExtensionSharedAssemblyProvider(ICollection<IScriptBindingProvider> bindi
2728
_bindingProviders = bindingProviders ?? throw new ArgumentNullException(nameof(bindingProviders));
2829
}
2930

30-
public bool TryResolveAssembly(string assemblyName, AssemblyLoadContext targetContext, out Assembly assembly)
31+
public bool TryResolveAssembly(string assemblyName, AssemblyLoadContext targetContext, ILogger logger, out Assembly assembly)
3132
{
3233
assembly = null;
3334

src/WebJobs.Script/Description/DotNet/ISharedAssemblyProvider.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33

44
using System.Reflection;
55
using System.Runtime.Loader;
6+
using Microsoft.Extensions.Logging;
67

78
namespace Microsoft.Azure.WebJobs.Script.Description
89
{
910
internal interface ISharedAssemblyProvider
1011
{
11-
bool TryResolveAssembly(string assemblyName, AssemblyLoadContext targetContext, out Assembly assembly);
12+
bool TryResolveAssembly(string assemblyName, AssemblyLoadContext targetContext, ILogger logger, out Assembly assembly);
1213
}
1314
}

src/WebJobs.Script/Description/DotNet/LocalSharedAssemblyProvider.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33

44
using System;
55
using System.IO;
6-
using System.Linq;
76
using System.Reflection;
87
using System.Runtime.Loader;
98
using System.Text.RegularExpressions;
9+
using Microsoft.Extensions.Logging;
1010

1111
namespace Microsoft.Azure.WebJobs.Script.Description
1212
{
@@ -45,7 +45,7 @@ private static string GetPrivateBinPath()
4545
return binPath ?? AppDomain.CurrentDomain.BaseDirectory;
4646
}
4747

48-
public bool TryResolveAssembly(string assemblyName, AssemblyLoadContext targetContext, out Assembly assembly)
48+
public bool TryResolveAssembly(string assemblyName, AssemblyLoadContext targetContext, ILogger logger, out Assembly assembly)
4949
{
5050
assembly = null;
5151

src/WebJobs.Script/Description/DotNet/ScriptFunctionMetadataResolver.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
using Microsoft.CodeAnalysis;
1717
using Microsoft.CodeAnalysis.Scripting;
1818
using Microsoft.Extensions.Logging;
19+
using Microsoft.Extensions.Logging.Abstractions;
1920

2021
namespace Microsoft.Azure.WebJobs.Script.Description
2122
{
@@ -80,7 +81,7 @@ public ScriptFunctionMetadataResolver(string scriptFilePath, ICollection<IScript
8081
var scriptResolver = ScriptMetadataResolver.Default.WithSearchPaths(_privateAssembliesPath);
8182
_scriptResolver = new CacheMetadataResolver(scriptResolver);
8283
_extensionSharedAssemblyProvider = new ExtensionSharedAssemblyProvider(bindingProviders);
83-
_logger = logger;
84+
_logger = logger ?? NullLogger.Instance;
8485
}
8586

8687
public ScriptOptions CreateScriptOptions()
@@ -165,8 +166,8 @@ public override ImmutableArray<PortableExecutableReference> ResolveReference(str
165166
{
166167
Assembly assembly = null;
167168

168-
if (SharedAssemblyProviders.Any(p => p.TryResolveAssembly(reference, AssemblyLoadContext.Default, out assembly)) ||
169-
_extensionSharedAssemblyProvider.TryResolveAssembly(reference, AssemblyLoadContext.Default, out assembly))
169+
if (SharedAssemblyProviders.Any(p => p.TryResolveAssembly(reference, AssemblyLoadContext.Default, _logger, out assembly)) ||
170+
_extensionSharedAssemblyProvider.TryResolveAssembly(reference, AssemblyLoadContext.Default, _logger, out assembly))
170171
{
171172
result = ImmutableArray.Create(MetadataReference.CreateFromFile(assembly.Location));
172173
}
@@ -231,7 +232,7 @@ public Assembly ResolveAssembly(AssemblyName assemblyName, FunctionAssemblyLoadC
231232
}
232233
else
233234
{
234-
_extensionSharedAssemblyProvider.TryResolveAssembly(assemblyName.FullName, FunctionAssemblyLoadContext.Shared, out assembly);
235+
_extensionSharedAssemblyProvider.TryResolveAssembly(assemblyName.FullName, FunctionAssemblyLoadContext.Shared, _logger, out assembly);
235236
}
236237

237238
return assembly;

test/WebJobs.Script.Tests/Description/DotNet/ExtensionSharedAssemblyProviderTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using Microsoft.Azure.WebJobs.Script.Description;
88
using Microsoft.Azure.WebJobs.Script.Extensibility;
99
using Microsoft.Extensions.Logging;
10+
using Microsoft.Extensions.Logging.Abstractions;
1011
using Microsoft.Extensions.Options;
1112
using Newtonsoft.Json.Linq;
1213
using Xunit;
@@ -26,7 +27,7 @@ public void TryResolveAssembly_ResolvesProviderAssembly()
2627
var provider = new ExtensionSharedAssemblyProvider(bindingProviders);
2728

2829
Assembly assembly;
29-
bool result = provider.TryResolveAssembly(typeof(TestBindingProvider).Assembly.GetName().Name, AssemblyLoadContext.Default, out assembly);
30+
bool result = provider.TryResolveAssembly(typeof(TestBindingProvider).Assembly.GetName().Name, AssemblyLoadContext.Default, NullLogger.Instance, out assembly);
3031

3132
Assert.True(result);
3233
Assert.NotNull(assembly);

0 commit comments

Comments
 (0)