The old Backplane Auto-Recovery is now, simply, Auto-Recovery!
It shines above the others features as a way to automatically handle and resolve 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.
Lately I proceeded with an almost complete rewrite of the internals of the entire distributed part, meaning both the distributed cache and the backplane, and in particular the auto-recovery feature to make it all even better..
This is the culmination of many months and months of research, experimentation, testing, benchmarking and in general a lot of work.
The new Auto-Recovery now supports both the distributed cache and the backplane, either individually or together.
Now it is also active, meaning it handles retries automatically instead of waiting for an external signal to "wake up".
Some of these improvements include:
continuous background processing (more robust)
queue automatic cleanup
active detection and processing of re-connection
the distributed cache and the backplane now work together even more (and better) than before, with granular control of re-sync operations needed
better handling of connection/subscription errors
better logging
Every edge case I thought of and all the others reported to me by the community are handled, all automatically.
You can read some of them at the dedicated docs page.
Please note that all the existing options named BackplaneAutoRecoveryXyz are now named simply AutoRecoveryXyz: this is not a breaking change though, since the old ones are still present but marked with the useful [Obsolete] attribute. Simply update to the latest version, recompile, look for some warnings and do the appropriate changes, if any.
In general it is quite complicated to understand what is going on in a distributed system.
When using FusionCache with the distributed cache and the backplane, a lot of stuff is going on at any given time: add to that intermittent transient errors and, even if we can be confident auto-recovery will handle it all automatically, clearly seeing the whole picture can become a daunting task.
It would be very useful to have something that let us clearly see it all in action, something that would let us configure different components, tweak some options, enable this, disable that and let us simulate a realistic workload to see the results.
This version introduces a better way to handle incoming backplane messages: long story short, it will now take less time for a change to be propagated to all the other nodes, and to be reflected into their local memory cache.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
coverage: 94.816% (+0.09%) from 94.73%
when pulling 27573de222b4889eb608a0570d65e790b267f966 on dependabot/nuget/ZiggyCreatures.FusionCache-0.24.0
into e198d3a8834bfcd583c174180fa7d75766eb3225 on main.
Bumps ZiggyCreatures.FusionCache from 0.23.0 to 0.24.0.
Release notes
Sourced from ZiggyCreatures.FusionCache's releases.
... (truncated)
Commits
24d5d0b
v0.24.0 (#183)1be828a
Add fusioncache-simulator-autorecovery cover imaged365da7
Update README.mdeaa8e09
Allow reuse of a Redis ConnectionMultiplexer instance between RedisCache and ...2b80b41
Update Comparison.mdea94305
Update Comparison.mdee9faa4
Fix small typo in logging documentation (#170)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show