Skip to content

Comments

Bump the dependencies group with 2 updates#50

Merged
stigvoss merged 1 commit intomainfrom
dependabot/nuget/src/DebaitMyFeed/DebaitMyFeed.Library/dependencies-5f556a4b61
Dec 26, 2025
Merged

Bump the dependencies group with 2 updates#50
stigvoss merged 1 commit intomainfrom
dependabot/nuget/src/DebaitMyFeed/DebaitMyFeed.Library/dependencies-5f556a4b61

Conversation

@dependabot
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Dec 26, 2025

Updated ZiggyCreatures.FusionCache from 2.4.0 to 2.5.0.

Release notes

Sourced from ZiggyCreatures.FusionCache's releases.

2.5.0

🛡️ Distributed Cache Stampede Protection

Since the very beginning FusionCache offered a solid Cache Stampede protection, as explained in the docs where it is clearly illustrated:

Cache Stampede Request Coalescing

Such protection worked not just in the normal flow (miss -> factory -> return) but also with other more advanced features like:

  • Eager Refresh: hit (after the eager threshold) -> return + background factory
  • Factory Timeouts: miss -> factory + timeout -> return + background complete

With time the stampede protection got even better, and even extensible: this allowed 3rd party implementations of the core mechanism, called memory locker (IFusionCacheMemoryLocker).

All of this without removing the normal "it just works" experience since, by default, a StandardMemoryLocker is used without needing any user setup or intervention.

Cool.

But here's the thing: this protection had always been a local thing, meaning it did not span multiple nodes, in a distributed way: this meant that, if we were "unlucky", multiple factories could have run at the same time for the same cache key on different nodes.

Meaning, this:

Distributed Cache Stampede, Before

But that was true until now: enter Distributed Cache Stampede Protection 🎉

Thanks to the introduction of the new IFusionCacheDistributedLocker (see the next point) it's now possible to coordinate factory execution accross multiple nodes, so that only one factory would run at the same time for the same cache key even on different nodes.

Meaning, this:

Distributed Cache Stampede, After

By providing an IFusionCacheDistributedLocker implementation during setup, FusionCache will take care of everything, we don't have to do anything else.

The setup looks like this:

services.AddFusionCache()
	// SERIALIZER
	.WithSerializer(
		new FusionCacheSystemTextJsonSerializer()
	)
	// DISTRIBUTED CACHE
	.WithDistributedCache(
		new RedisCache(new RedisCacheOptions
		{
			Configuration = "localhost:6379",
		})
	)
	// BACKPLANE
	.WithBackplane(
		new RedisBackplane(new RedisBackplaneOptions
 ... (truncated)

Commits viewable in [compare view](https://github.com/ZiggyCreatures/FusionCache/compare/v2.4.0...v2.5.0).
</details>

Updated [ZiggyCreatures.FusionCache.Serialization.SystemTextJson](https://github.com/ZiggyCreatures/FusionCache) from 2.4.0 to 2.5.0.

<details>
<summary>Release notes</summary>

_Sourced from [ZiggyCreatures.FusionCache.Serialization.SystemTextJson's releases](https://github.com/ZiggyCreatures/FusionCache/releases)._

## 2.5.0

## 🛡️ Distributed Cache Stampede Protection

Since the very beginning FusionCache offered a solid [Cache Stampede protection](https://github.com/ZiggyCreatures/FusionCache/blob/main/docs/CacheStampede.md), as explained in the [docs](https://github.com/ZiggyCreatures/FusionCache/blob/main/docs/CacheStampede.md) where it is clearly illustrated:

![Cache Stampede Request Coalescing](https://raw.githubusercontent.com/ZiggyCreatures/FusionCache/main/docs/images/cache-stampede-after.png)

Such protection worked not just in the normal flow (miss -> factory -> return) but also with other more advanced features like:
- [Eager Refresh](https://github.com/ZiggyCreatures/FusionCache/blob/main/docs/EagerRefresh.md): hit (after the eager threshold) -> return + background factory
- [Factory Timeouts](https://github.com/ZiggyCreatures/FusionCache/blob/main/docs/Timeouts.md): miss -> factory + timeout -> return + background complete

With time the stampede protection got even better, and even [extensible](https://github.com/ZiggyCreatures/FusionCache/issues/192): this allowed 3rd party implementations of the core mechanism, called memory locker (`IFusionCacheMemoryLocker`).

All of this without removing the normal "it just works" experience since, by default, a `StandardMemoryLocker` is used without needing any user setup or intervention.

Cool.

But here's the thing: this protection had always been a _local_ thing, meaning it did not span multiple nodes, in a distributed way: this meant that, if we were "unlucky", multiple factories could have run at the same time for the same cache key on different nodes.

Meaning, this:

![Distributed Cache Stampede, Before](https://raw.githubusercontent.com/ZiggyCreatures/FusionCache/main/docs/images/cache-stampede-distributed-before.png)

But that was true until now: enter **Distributed Cache Stampede Protection** 🎉

Thanks to the introduction of the new `IFusionCacheDistributedLocker` (see the next point) it's now possible to coordinate factory execution accross multiple nodes, so that only one factory would run at the same time for the same cache key even on different nodes.

Meaning, this:

![Distributed Cache Stampede, After](https://raw.githubusercontent.com/ZiggyCreatures/FusionCache/main/docs/images/cache-stampede-distributed-after.png)

By providing an `IFusionCacheDistributedLocker` implementation during setup, FusionCache will take care of everything, we don't have to do anything else.

The setup looks like this:

```c#
services.AddFusionCache()
	// SERIALIZER
	.WithSerializer(
		new FusionCacheSystemTextJsonSerializer()
	)
	// DISTRIBUTED CACHE
	.WithDistributedCache(
		new RedisCache(new RedisCacheOptions
		{
			Configuration = "localhost:6379",
		})
	)
	// BACKPLANE
	.WithBackplane(
		new RedisBackplane(new RedisBackplaneOptions
 ... (truncated)

Commits viewable in [compare view](https://github.com/ZiggyCreatures/FusionCache/compare/v2.4.0...v2.5.0).
</details>

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-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

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 <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions


</details>

Bumps ZiggyCreatures.FusionCache from 2.4.0 to 2.5.0
Bumps ZiggyCreatures.FusionCache.Serialization.SystemTextJson from 2.4.0 to 2.5.0

---
updated-dependencies:
- dependency-name: ZiggyCreatures.FusionCache
  dependency-version: 2.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dependencies
- dependency-name: ZiggyCreatures.FusionCache.Serialization.SystemTextJson
  dependency-version: 2.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot bot added .NET Pull requests that update .NET code dependencies Pull requests that update a dependency file labels Dec 26, 2025
@stigvoss stigvoss merged commit 2b7e4ea into main Dec 26, 2025
2 checks passed
@dependabot dependabot bot deleted the dependabot/nuget/src/DebaitMyFeed/DebaitMyFeed.Library/dependencies-5f556a4b61 branch December 26, 2025 14:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant