HybridCache: ensure that Size is always specified in L1 #5420
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context: dotnet/aspnetcore#57582 -
MemoryCache
may (opt-in) be enforcing size constraints; to satisfy that scenario, every L1 "set" operation must include anICacheEntry.Size
(primary review here is probably from aspnetcore; all eyes are welcome, of course)
At first this sounds simple, but it means that we may need to serialize before we set the result, but we want to retain that buffer for the L2 write, which happens after we've supplied the value to the consumer. This requires a little bit of additional gymnastics; lots of comments included. Note also that
BufferReleaseTests
already has tests to ensure correct buffer release semantics.Microsoft Reviewers: Open in CodeFlow