Skip to content

Commit 3ac6731

Browse files
committed
Add component type errors when a component fails to render
1 parent bb2d778 commit 3ac6731

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

src/Components/Components/src/RenderTree/Renderer.Log.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@ public static void HandlingEvent(ILogger logger, ulong eventHandlerId, EventArgs
6767
[LoggerMessage(6, LogLevel.Debug, "Skipping attempt to raise event {EventId} of type '{EventType}' because the component ID {ComponentId} was already disposed", EventName = "SkippingEventOnDisposedComponent", SkipEnabledCheck = true)]
6868
public static partial void SkippingEventOnDisposedComponent(ILogger logger, int componentId, ulong eventId, string eventType);
6969

70+
[LoggerMessage(7, LogLevel.Warning, "Failed to render component of type {ComponentType}", EventName = "ErrorRenderingComponent", SkipEnabledCheck = true)]
71+
public static partial void ErrorRenderingComponent(ILogger logger, Type componentType, Exception exception);
72+
7073
public static void SkippingEventOnDisposedComponent(ILogger logger, int componentId, ulong eventHandlerId, EventArgs? eventArgs)
7174
{
7275
if (logger.IsEnabled(LogLevel.Debug)) // This is almost always false, so skip the evaluations

src/Components/Components/src/RenderTree/Renderer.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -805,7 +805,7 @@ private void ProcessRenderQueue()
805805
_isBatchInProgress = true;
806806
var updateDisplayTask = Task.CompletedTask;
807807
var batchStartTimestamp = ComponentMetrics != null && ComponentMetrics.IsBatchEnabled ? Stopwatch.GetTimestamp() : 0;
808-
808+
RenderQueueEntry nextToRender = default;
809809
try
810810
{
811811
if (_batchBuilder.ComponentRenderQueue.Count == 0)
@@ -826,7 +826,7 @@ private void ProcessRenderQueue()
826826
// Process render queue until empty
827827
while (_batchBuilder.ComponentRenderQueue.Count > 0)
828828
{
829-
var nextToRender = _batchBuilder.ComponentRenderQueue.Dequeue();
829+
nextToRender = _batchBuilder.ComponentRenderQueue.Dequeue();
830830
RenderInExistingBatch(nextToRender);
831831
}
832832

@@ -848,6 +848,11 @@ private void ProcessRenderQueue()
848848
{
849849
ComponentMetrics.FailBatchSync(e, batchStartTimestamp);
850850
}
851+
if (nextToRender.ComponentState?.Component != null)
852+
{
853+
var componentType = nextToRender.ComponentState.Component.GetType();
854+
Log.ErrorRenderingComponent(_logger, componentType, e);
855+
}
851856

852857
// Ensure we catch errors while running the render functions of the components.
853858
HandleException(e);

0 commit comments

Comments
 (0)