Skip to content

Separate instances sharing memory #198

@sebbarg

Description

@sebbarg

Describe the bug
Creating two separate instances of LazyCache, using default constructor will share the same underlying memory.
I'm not sure if this is a bug or by design, but it clearly violates the principle of least surprise :)

To Reproduce

using LazyCache;

// First cache

var cache1 = new CachingService();
cache1.GetOrAdd("key1", () => "value1");

// Another cache

var cache2 = new CachingService();
var value = cache2.Get<string>("key1");

Console.WriteLine(value);

// Expected value: null

// Actual value: "value1"

Expected behavior
Creating two instances of LazyCache using default constructors, should not share the underlying cache.

** Framework and Platform **

  • OS: [Everything]
  • Framework [NET8]
  • LazyCache Version [e.g. 2.4.0]

Additional context
Culprit seems to be this static:

public static Lazy<ICacheProvider> DefaultCacheProvider { get; set; }

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions