Skip to content

Commit 205634c

Browse files
Exception handling for AssemblyAnalysisService (#8368)
1 parent f85681d commit 205634c

File tree

1 file changed

+32
-18
lines changed

1 file changed

+32
-18
lines changed

src/WebJobs.Script.WebHost/AssemblyAnalysis/AssemblyAnalysisService.cs

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,50 +26,64 @@ internal class AssemblyAnalysisService : IHostedService, IDisposable
2626
private Task _analysisTask;
2727
private bool _disposed;
2828
private bool _analysisScheduled;
29+
private ILogger _logger;
2930

3031
public AssemblyAnalysisService(IEnvironment environment, WebJobsScriptHostService scriptHost, ILoggerFactory loggerFactory, IOptionsMonitor<StandbyOptions> standbyOptionsMonitor)
3132
{
3233
_environment = environment;
3334
_scriptHost = scriptHost;
3435
_loggerFactory = loggerFactory;
3536
_standbyOptionsMonitor = standbyOptionsMonitor;
37+
_logger = _loggerFactory.CreateLogger<AssemblyAnalysisService>();
3638
}
3739

3840
public Task StartAsync(CancellationToken cancellationToken)
3941
{
40-
if (!_environment.IsCoreTools())
42+
try
4143
{
42-
if (_standbyOptionsMonitor.CurrentValue.InStandbyMode)
44+
if (!_environment.IsCoreTools())
4345
{
44-
_standbyOptionsMonitor.OnChange(standbyOptions =>
46+
if (_standbyOptionsMonitor.CurrentValue.InStandbyMode)
4547
{
46-
if (!standbyOptions.InStandbyMode && !_analysisScheduled)
48+
_standbyOptionsMonitor.OnChange(standbyOptions =>
4749
{
48-
ScheduleAssemblyAnalysis();
49-
}
50-
});
51-
}
52-
else
53-
{
54-
ScheduleAssemblyAnalysis();
50+
if (!standbyOptions.InStandbyMode && !_analysisScheduled)
51+
{
52+
ScheduleAssemblyAnalysis();
53+
}
54+
});
55+
}
56+
else
57+
{
58+
ScheduleAssemblyAnalysis();
59+
}
5560
}
5661
}
62+
catch (Exception ex)
63+
{
64+
_logger.LogError(ex, "Error starting Assembly analysis service. Handling error and continuing.");
65+
}
5766

5867
return Task.CompletedTask;
5968
}
6069

6170
public Task StopAsync(CancellationToken cancellationToken)
6271
{
63-
_cancellationTokenSource?.Cancel();
64-
65-
if (_analysisTask != null && !_analysisTask.IsCompleted)
72+
try
6673
{
67-
var logger = _loggerFactory.CreateLogger<AssemblyAnalysisService>();
68-
logger.LogDebug("Assembly analysis service stopped before analysis completion. Waiting for cancellation.");
74+
_cancellationTokenSource?.Cancel();
6975

70-
return _analysisTask;
71-
}
76+
if (_analysisTask != null && !_analysisTask.IsCompleted)
77+
{
78+
_logger.LogDebug("Assembly analysis service stopped before analysis completion. Waiting for cancellation.");
7279

80+
return _analysisTask;
81+
}
82+
}
83+
catch (Exception ex)
84+
{
85+
_logger.LogError(ex, "Error stopping Assembly analysis service. Handling error and continuing.");
86+
}
7387
return Task.CompletedTask;
7488
}
7589

0 commit comments

Comments
 (0)