-
-
Notifications
You must be signed in to change notification settings - Fork 456
Open
Labels
Description
Here is the code that I'm using to run IReadModelPopulator
var typeList = typeof(DependencyInjection).Assembly.DefinedTypes
.Where(type => !type.IsInterface && !type.IsAbstract &&
type.ImplementedInterfaces.Any(inter => inter == typeof(IReadModel))).ToList();
foreach (var x in typeList)
{
await populator.PurgeAsync(x, ct);
}
await populator.PopulateAsync(typeList, ct);
It happens that if any of the event upgraders throw an exception will get stuck ReadModelPopulator in a while loop waiting for more events to be enqueued to _pipedEvents
.
When an exception occurs it will fail on ReadModelPopulator:144, meanwhile a ReadModelPopulator:173 while loop will run for an eternity.
What's worse I was not seeing any errors in the Logging, so it took me a while to figure it out (maybe my logging levels are wrong)
I assume that event upgraders should never ever throw any exceptions (it should just skip the event and log an error, right?)
Suggestions for a fix:
- Make sure it catches and logs exceptions
- Make sure ProcessEventQueue won't run infinitely