[backend/signalr] Catch exceptions in event handlers to prevent exceptions from causing backend crashes

This commit is contained in:
Laura Hausmann 2024-11-20 00:45:49 +01:00
parent 004af22b68
commit c91a1fa8bc
No known key found for this signature in database
GPG key ID: D044E84C5BE01605

View file

@ -417,22 +417,43 @@ public sealed class StreamingConnectionAggregate : IDisposable
#region Filter event handlers
private async void OnFilterAdded(object? _, Filter filter)
{
try
{
if (filter.User.Id != _userId) return;
await _hub.Clients.User(_userId).FilterAddedAsync(FilterRenderer.RenderOne(filter));
}
catch (Exception e)
{
_logger.LogError("Event handler {handler} threw exception: {e}", nameof(OnFilterAdded), e);
}
}
private async void OnFilterUpdated(object? _, Filter filter)
{
try
{
if (filter.User.Id != _userId) return;
await _hub.Clients.User(_userId).FilterUpdatedAsync(FilterRenderer.RenderOne(filter));
}
catch (Exception e)
{
_logger.LogError("Event handler {handler} threw exception: {e}", nameof(OnFilterUpdated), e);
}
}
private async void OnFilterRemoved(object? _, Filter filter)
{
try
{
if (filter.User.Id != _userId) return;
await _hub.Clients.User(_userId).FilterRemovedAsync(filter.Id);
}
catch (Exception e)
{
_logger.LogError("Event handler {handler} threw exception: {e}", nameof(OnFilterRemoved), e);
}
}
#endregion