Critical bug - SfScheduler - NullReference exception on editting an event

I have two resource groups on my SfSchedule control, Users and Projects. I get a list of events and create two list objects for the groups based on the events returned. Whenever the list of events is changed or a filter is applied, I recreate the datasource for the scheduler and update the User and Project resource lists. 


If I filter the events by user, no exception gets thrown. However, if I edit an event and amend either the user or the project, a null reference exception is thrown. It does not matter if the user/project combination already exists, an exception always gets thrown.

Why does editting an event cause this exception but using the filter does not? Such catastrophic errors are becoming more commonplace and are incredibly frustrating, we are now delaying our release due to bugs that have been introduced in the latest version that we require to fix previously reported bugs! Bugs upon bugs.

I have attached a sample to reproduce the issue using version 19.2.0.47.

The error stack:

Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer: Warning: Unhandled exception rendering component: Object reference not set to an instance of an object.


System.NullReferenceException: Object reference not set to an instance of an object.

   at Syncfusion.Blazor.Schedule.Internal.ResourceRenderer`2.OnParametersSetAsync()

   at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)

Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost: Error: Unhandled exception in circuit 'HLVgp1WOeStpmVetxnmfh7b8G74WbWjNKJvdsUH3cMU'.


System.NullReferenceException: Object reference not set to an instance of an object.

   at Syncfusion.Blazor.Schedule.Internal.ResourceRenderer`2.OnParametersSetAsync()

   at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)

[2021-07-15T10:12:35.099Z] Error: System.NullReferenceException: Object reference not set to an instance of an object.

   at Syncfusion.Blazor.Schedule.Internal.ResourceRenderer`2.OnParametersSetAsync()

   at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)

[2021-07-15T10:12:35.100Z] Information: Connection disconnected.

Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer: Warning: Unhandled exception rendering component: Object reference not set to an instance of an object.


System.NullReferenceException: Object reference not set to an instance of an object.

   at Syncfusion.Blazor.Schedule.Internal.ResourceRenderer`2.OnParametersSetAsync()

   at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)

Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost: Error: Unhandled exception in circuit 'HLVgp1WOeStpmVetxnmfh7b8G74WbWjNKJvdsUH3cMU'.


System.NullReferenceException: Object reference not set to an instance of an object.

   at Syncfusion.Blazor.Schedule.Internal.ResourceRenderer`2.OnParametersSetAsync()

   at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)

Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer: Warning: Unhandled exception rendering component: Encountered unsupported frame type during diffing: None


System.NotImplementedException: Encountered unsupported frame type during diffing: None

   at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex)

   at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)

   at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex)

   at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)

   at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.ComputeDiff(Renderer renderer, RenderBatchBuilder batchBuilder, Int32 componentId, ArrayRange`1 oldTree, ArrayRange`1 newTree)

   at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment)

   at Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderInExistingBatch(RenderQueueEntry renderQueueEntry)

   at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()

Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost: Error: Unhandled exception in circuit 'HLVgp1WOeStpmVetxnmfh7b8G74WbWjNKJvdsUH3cMU'.


System.NotImplementedException: Encountered unsupported frame type during diffing: None

   at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex)

   at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)

   at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex)

   at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)

   at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.ComputeDiff(Renderer renderer, RenderBatchBuilder batchBuilder, Int32 componentId, ArrayRange`1 oldTree, ArrayRange`1 newTree)

   at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment)

   at Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderInExistingBatch(RenderQueueEntry renderQueueEntry)

   at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()


Attachment: Schedule__TimelineMonth_render_bug_7a674e1.zip

5 Replies

LS Lee Stevens July 15, 2021 10:43 AM UTC

In addition to the above, if one of the resource lists has additional fields on the bound object that aren't used for the resource grouping and those fields are changed, the exception also gets thrown. 


For example, if the UserProjectData class has an int property of SomeExtraId and SomeExtraId is editted, the exception will be thrown upon saving.

SomeExtraId isn't used for grouping by the scheduler, it is merely a populated field on the UserProjectData class.

Updated sample attached with this exact scenario.


Attachment: Schedule__TimelineMonth_render_bug__V2_a6a137ca.zip


NR Nevitha Ravi Syncfusion Team July 19, 2021 01:32 PM UTC

Hi Lee, 

Sorry for the inconveniences caused. 

We could replicate the reported issues and confirm this as defect at our end. We have reopened the below feedback to track the issue. 

The fix will be included on the weekly patch release scheduled on end of July 2021. We would appreciate your patience until then. 

Regards, 
Nevitha 



NR Nevitha Ravi Syncfusion Team July 28, 2021 08:53 AM UTC

Hi Lee, 

We regret for the delay, the issue fix has been rescheduled to upcoming patch release expected to be rolled out by the first week of August, 2021. We appreciate your patience until then. 

Regards, 
Nevitha 



NR Nevitha Ravi Syncfusion Team August 5, 2021 09:55 AM UTC

Hi Lee, 

Sorry for the further delay. 

We have fixed the issue internally and included it for Volume 2 SP expected to be rolled by mid of August, 2021. We appreciate your patience until then. 

Regards, 
Nevitha 



NR Nevitha Ravi Syncfusion Team August 11, 2021 02:57 PM UTC

Hi Lee, 

We are glad to announce that our Essential Studio 2021 Volume 2 SP release v19.2.0.55 is rolled out and is available for download under the following link. This release has fixed the bug ‘appointments not saving when changing resources dynamically”’. As a result, we recommend you upgrade to the latest version of our Syncfusion package to avail of this fix. 
 
 
We thank you for your support and appreciate your patience in waiting for this release. Please get in touch with us if you would require any further assistance. 
 
Regards, 
Nevitha 


Loader.
Up arrow icon