Open alexeyzimarev opened 3 years ago
I believe it can be handled in two ways:
Event
as nullableNote that other clients might handle the case differently. For example, the NodeJS client has the event
property marked as nullable.
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