v0.24.0-preview1
Pre-release↩️ Better Auto-Recovery (docs)
The Backplane is a powerful component in FusionCache and is already a pretty good feature that works really well.
On top of the standard backplane features, auto-recovery shines above the others as a way to automatically handle transient errors with timed retries and other techniques, to do the best it can to avoid leaving your cache in a dire situation, no matter what.
In the last couple of months I proceeded with an almost complete rewrite of the internals of the backplane and in particular the auto-recovery feature, to make it work even better.
Some of these improvements include:
- auto-recovery continuous background processing (more robust)
- the distributed cache and the backplane now work together even more (and better) than before, with granular control of re-sync operations needed
- auto-recovery queue automatic cleanup
- active detection and processing of re-connection
- better handling of connection/subscription errors
- unified backplane auto-recovery delay via
BackplaneAutoRecoveryDelay
option (BackplaneAutoRecoveryReconnectDelay
is now marked as obsolete) - added
ReThrowBackplaneExceptions
entry option, to have even more control of backplane errors - marked
EnableDistributedExpireOnBackplaneAutoRecovery
as obsolete, since now everything is fully automatic - better log messages
Now every edge case I thought of and all the others reported to me by the community are handled, all automatically.
Some examples:
- when setting a value in the cache, the distributed cache was available but the backplane was (temporarily) not
- when setting a value in the cache, the backplane was available but the distributed cache was (temporarily) not
- when setting a value in the cache, both the distributed cache and the backplane were not available
- in all the above cases, when both the distributed cache and/or the backplane turned out to be available again, but the other were not
- a mix of all of these situations
- and more, much more...
And what is needed to handle all of this? Nothing: as always, FusionCache tries to be helpful without any extra care on your side.
📞 Eviction
event now pass the cache value (docs)
Thanks to a request by community member @giulianob the Eviction
event in the memory cache has been made more powerful, and is now passing the cache value being evicted.
This can be useful for example to dispose a value being evicted from the cache, or more.
See here for more.
🐞 NullFusionCache
now correctly handles CreateEntryOptions
Thaks to a bug report by community member @kelko , a small issue has been fixed with the standard NullFusionCache
implementation.
See here for more.
🐵 New base AbstractChaosComponent
Historically all the chaos-related components (eg: ChaosBackplane
, ChaosDistributedCache
, etc) all re-implement the same core properties and methods to control throws probability, random delays and so on.
Now that these components exist for some time and they are working well, they needed a little refactoring.
So a new AbstractChaosComponent
has been created acting as a base class for all chaos-related components, so that they now all inherit from it to result in less code and better evolvability.
See here for more.