Skip to content

Commit 96a9fb8

Browse files
committed
Unsubscribe from NodeFunctionInvoker.UnhandledException on ScriptHost.Dispose
1 parent af2479f commit 96a9fb8

File tree

1 file changed

+23
-22
lines changed

1 file changed

+23
-22
lines changed

src/WebJobs.Script/Host/ScriptHost.cs

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ protected ScriptHost(ScriptHostConfiguration scriptConfig)
3838
{
3939
ScriptConfig = scriptConfig;
4040
FunctionErrors = new Dictionary<string, Collection<string>>(StringComparer.OrdinalIgnoreCase);
41+
NodeFunctionInvoker.UnhandledException += OnUnhandledException;
4142
}
4243

4344
public TraceWriter TraceWriter { get; private set; }
@@ -203,8 +204,6 @@ protected virtual void Initialize()
203204
new CSharpFunctionDescriptionProvider(this, ScriptConfig)
204205
};
205206

206-
NodeFunctionInvoker.UnhandledException += OnUnhandledException;
207-
208207
// read all script functions and apply to JobHostConfiguration
209208
Collection<FunctionDescriptor> functions = ReadFunctions(ScriptConfig, descriptionProviders);
210209
string defaultNamespace = "Host";
@@ -221,26 +220,6 @@ protected virtual void Initialize()
221220
Functions = functions;
222221
}
223222

224-
private void OnUnhandledException(object sender, UnhandledExceptionEventArgs e)
225-
{
226-
HandleHostError((Exception)e.ExceptionObject);
227-
}
228-
229-
// Bindings may require us to update JobHostConfiguration.
230-
private static void ApplyBindingConfiguration(Collection<FunctionDescriptor> functions, JobHostConfiguration hostConfig)
231-
{
232-
JobHostConfigurationBuilder builder = new JobHostConfigurationBuilder(hostConfig);
233-
234-
foreach (var func in functions)
235-
{
236-
foreach (var metadata in func.Metadata.InputBindings.Concat(func.Metadata.OutputBindings))
237-
{
238-
metadata.ApplyToConfig(builder);
239-
}
240-
}
241-
builder.Done();
242-
}
243-
244223
public static ScriptHost Create(ScriptHostConfiguration scriptConfig = null)
245224
{
246225
if (scriptConfig == null)
@@ -659,6 +638,26 @@ internal static void ApplyConfiguration(JObject config, ScriptHostConfiguration
659638
hostConfig.UseCore();
660639
}
661640

641+
private void OnUnhandledException(object sender, UnhandledExceptionEventArgs e)
642+
{
643+
HandleHostError((Exception)e.ExceptionObject);
644+
}
645+
646+
// Bindings may require us to update JobHostConfiguration.
647+
private static void ApplyBindingConfiguration(Collection<FunctionDescriptor> functions, JobHostConfiguration hostConfig)
648+
{
649+
JobHostConfigurationBuilder builder = new JobHostConfigurationBuilder(hostConfig);
650+
651+
foreach (var func in functions)
652+
{
653+
foreach (var metadata in func.Metadata.InputBindings.Concat(func.Metadata.OutputBindings))
654+
{
655+
metadata.ApplyToConfig(builder);
656+
}
657+
}
658+
builder.Done();
659+
}
660+
662661
private void HandleHostError(Microsoft.Azure.WebJobs.Extensions.TraceFilter traceFilter)
663662
{
664663
foreach (TraceEvent traceEvent in traceFilter.Events)
@@ -822,6 +821,8 @@ protected override void Dispose(bool disposing)
822821
{
823822
((IDisposable)TraceWriter).Dispose();
824823
}
824+
825+
NodeFunctionInvoker.UnhandledException -= OnUnhandledException;
825826
}
826827
}
827828
}

0 commit comments

Comments
 (0)