Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed concurrency errors in MemoryCache when using dotnetcore #104

Merged
merged 3 commits into from
Jul 24, 2020

Conversation

sebslsch
Copy link
Contributor

Fixed concurrency errors in MemoryCache (#101)

When using dotnetcore, adding a cache entry lead to InvalidOperationExceptions
if a new registration callback was added concurrently.

The issue was caused by re-using a single MemoryCacheEntryOptions for multiple
cache entries. This change resolves the issue by creating a new options
instance for each cache entry.

This causes a change of behavior with the eviction callbacks.
Previously, when using dotnetcore, all registered callbacks would be kept and
invoked on a cache eviction.
Now, only the last registered callback will be invoked. This behavior is
consistent with the implementation for .NET Framework 4.5.2.

The default implementation of CacheRepository will register a new callback in
the constructor of each instance.
Because each callback modifies a static class field, it should not matter
which callback is invoked.

It might, however, affect custom implementations.

@gautema gautema merged commit b1ad794 into gautema:master Jul 24, 2020
@gautema
Copy link
Owner

gautema commented Jul 24, 2020

Changes included in version 1..32.2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants