In an effort to prevent some deadlock issues we've seen in production, reworked the way that the token stores deserialize items out of the database. Instead of trying to do a blocking-asynchronous call to the database in the JsonConverters, defer that work to the store itself, where it can be done in an asynchronous context.
I fully admit that this isn't nearly as elegant and clever, and it means that the stores need to know more about the structure of what's being deserialized. But that seems a small price to pay for much greater stability, and the ability to expunge the AsyncHelper.
There's also a little test coverage for OperationalDbContext.
In an effort to prevent some deadlock issues we've seen in production, reworked the way that the token stores deserialize items out of the database. Instead of trying to do a blocking-asynchronous call to the database in the
JsonConverter
s, defer that work to the store itself, where it can be done in an asynchronous context.I fully admit that this isn't nearly as elegant and clever, and it means that the stores need to know more about the structure of what's being deserialized. But that seems a small price to pay for much greater stability, and the ability to expunge the
AsyncHelper
.There's also a little test coverage for
OperationalDbContext
.101