Implement ConcurrentLfu events: attempt 3 #727
Draft
+865
−118
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.
This PR implements events for ConcurrentLfu as a switchable policy. When disabled all event code is fully elided at runtime by the JIT compiler.
Events are considered perf critical in ConcurrentLfu because the ItemRemoved logic is invoked as part of the maintenance cycle, this introduces overhead even when there are no events registered. The Maintenance method latency determines cache throughput at the limit, so any overhead here is not desired. Later, these events could be captured in a list and processed asynchronously via the scheduler.
This PR was produced with Claude Code using the following prompts:
Prompt 1:
Prompt 2:
Prompt 3:
Fixed manually: reviewed code to determine correct approach to distinguish between evicted vs removed.
Fixed manually: test build and run.
Prompt 4:
Prompt 5:
Prompt 6:
Prompt 7: