Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/Components/Components/src/RenderTree/Renderer.Log.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,9 @@ public static void HandlingEvent(ILogger logger, ulong eventHandlerId, EventArgs
[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)]
public static partial void SkippingEventOnDisposedComponent(ILogger logger, int componentId, ulong eventId, string eventType);

[LoggerMessage(7, LogLevel.Warning, "Failed to render component of type {ComponentType}", EventName = "ErrorRenderingComponent", SkipEnabledCheck = true)]
public static partial void ErrorRenderingComponent(ILogger logger, Type componentType, Exception exception);

public static void SkippingEventOnDisposedComponent(ILogger logger, int componentId, ulong eventHandlerId, EventArgs? eventArgs)
{
if (logger.IsEnabled(LogLevel.Debug)) // This is almost always false, so skip the evaluations
Expand Down
9 changes: 7 additions & 2 deletions src/Components/Components/src/RenderTree/Renderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -805,7 +805,7 @@ private void ProcessRenderQueue()
_isBatchInProgress = true;
var updateDisplayTask = Task.CompletedTask;
var batchStartTimestamp = ComponentMetrics != null && ComponentMetrics.IsBatchEnabled ? Stopwatch.GetTimestamp() : 0;

RenderQueueEntry nextToRender = default;
try
{
if (_batchBuilder.ComponentRenderQueue.Count == 0)
Expand All @@ -826,7 +826,7 @@ private void ProcessRenderQueue()
// Process render queue until empty
while (_batchBuilder.ComponentRenderQueue.Count > 0)
{
var nextToRender = _batchBuilder.ComponentRenderQueue.Dequeue();
nextToRender = _batchBuilder.ComponentRenderQueue.Dequeue();
RenderInExistingBatch(nextToRender);
}

Expand All @@ -848,6 +848,11 @@ private void ProcessRenderQueue()
{
ComponentMetrics.FailBatchSync(e, batchStartTimestamp);
}
if (nextToRender.ComponentState?.Component != null)
{
var componentType = nextToRender.ComponentState.Component.GetType();
Log.ErrorRenderingComponent(_logger, componentType, e);
}

// Ensure we catch errors while running the render functions of the components.
HandleException(e);
Expand Down
Loading