Skip to content

Commit 964e641

Browse files
committed
Need to disable lazy loading by default since it regresses the IBinder imperative binding scenario.
Fix for: Azure/azure-webjobs-sdk#1295
1 parent 726ac8b commit 964e641

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

src/WebJobs.Script/Config/ScriptHostConfiguration.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,13 @@ public ScriptHostConfiguration()
105105
/// </summary>
106106
public bool IsSelfHost { get; set; }
107107

108+
/// <summary>
109+
/// Gets or sets a value indicating whether we can lazy load the extensions.
110+
/// If true, only load extensions that are explicitly referenced from function.json or method signatures.
111+
/// Default to false
112+
/// </summary>
113+
public bool LazyLoadExtensions { get; set; }
114+
108115
/// <summary>
109116
/// Gets or sets the <see cref="LogCategoryFilter"/> to use when constructing providers for the
110117
/// registered <see cref="ILoggerFactory"/>.

src/WebJobs.Script/Host/ScriptHost.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,11 @@ protected virtual void Initialize()
470470
var functionMetadata = ReadFunctionMetadata(ScriptConfig, TraceWriter, _startupLogger, FunctionErrors, _settingsManager);
471471
var usedBindingTypes = DiscoverBindingTypes(functionMetadata);
472472

473+
if (!ScriptConfig.LazyLoadExtensions)
474+
{
475+
usedBindingTypes = _builtinBindingTypes.Keys.Concat(_builtinScriptBindingTypes.Keys).ToArray();
476+
}
477+
473478
var bindingProviders = LoadBindingProviders(ScriptConfig, hostConfigObject, TraceWriter, _startupLogger, usedBindingTypes);
474479
ScriptConfig.BindingProviders = bindingProviders;
475480

@@ -1483,6 +1488,14 @@ internal static void ApplyConfiguration(JObject config, ScriptHostConfiguration
14831488
}
14841489
}
14851490

1491+
if (config.TryGetValue("lazyLoadExtensions", out value))
1492+
{
1493+
if (value.Type == JTokenType.Boolean)
1494+
{
1495+
scriptConfig.LazyLoadExtensions = (bool)value;
1496+
}
1497+
}
1498+
14861499
if (config.TryGetValue("functionTimeout", out value))
14871500
{
14881501
TimeSpan requestedTimeout = TimeSpan.Parse((string)value, CultureInfo.InvariantCulture);

0 commit comments

Comments
 (0)