You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The ResolvedEvent.Event property is not nullable, so we assume that the property value is never null.
However, a catch-up subscription to a projected stream (i.e. category stream) with links to deleted events in it, delivers events to the subscriber where Event is null.
Steps to reproduce:
Produce events to multiple streams for the same category
Delete some of those streams
Create a catch-up subscription to the category stream
Try to get the Event and deserialise its payload without checking if Event is null as it is not a nullable property
Observe NullReferenceException when the subscription hits the first deleted event
I have a test in Eventuous, which reproduces the issue, so I can be sure that Eventuous can handle this properly.
I would opt for the first suggestion. It's very confusing to have a type named ResolvedEvent but you are not able to assume that it is actually Resolved.
EDIT: Alternatively, change the name of the type to something that makes sense.
The
ResolvedEvent.Event
property is not nullable, so we assume that the property value is never null.However, a catch-up subscription to a projected stream (i.e. category stream) with links to deleted events in it, delivers events to the subscriber where
Event
is null.Steps to reproduce:
Event
and deserialise its payload without checking ifEvent
is null as it is not a nullable propertyNullReferenceException
when the subscription hits the first deleted eventI have a test in Eventuous, which reproduces the issue, so I can be sure that Eventuous can handle this properly.
Here is the test: https://github.com/Eventuous/eventuous/blob/26f3750da676b3ab85bb8e2f6be8934a2e045c04/test/Eventuous.Tests.EventStore/StreamSubscriptionTests.cs#L33
Here is the workaround:
https://github.com/Eventuous/eventuous/blob/26f3750da676b3ab85bb8e2f6be8934a2e045c04/src/Eventuous.Subscriptions.EventStoreDB/StreamSubscription.cs#L114-L124
The text was updated successfully, but these errors were encountered: