refactor: replace filteredServerCache with generic syncutil.TTLCache#7277
Draft
Copilot wants to merge 3 commits into
Draft
refactor: replace filteredServerCache with generic syncutil.TTLCache#7277Copilot wants to merge 3 commits into
Copilot wants to merge 3 commits into
Conversation
7 tasks
Add TTLCache[K, V] to internal/syncutil with TTL eviction and LRU-cap, then replace the hand-rolled filteredServerCache in server/routed.go with the new type. Move truncateCacheKeyForLog to session_util.go and migrate cache-specific tests to syncutil/ttl_cache_test.go.
Copilot
AI
changed the title
[WIP] Fix duplicate code pattern in filteredServerCache
refactor: replace filteredServerCache with generic syncutil.TTLCache
Jun 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
internal/server/routed.gocontained a ~70-line hand-rolledfilteredServerCachethat duplicated the get-or-create pattern already present ininternal/syncutil/cache.go, while adding TTL eviction and LRU-cap that the generic helper lacked.Changes
internal/syncutil/ttl_cache.go— New genericTTLCache[K comparable, V any]with lazy TTL eviction and LRU-cap eviction on everyGetOrCreatecall. Includes an injectable clock (newTTLCacheWithClock) for deterministic testing.internal/server/routed.go— DropsfilteredServerCache,filteredServerEntry,newFilteredServerCache, and thegetOrCreatemethod. Replaced withsyncutil.NewTTLCache[string, *sdk.Server]:internal/server/session_util.go—truncateCacheKeyForLogmoved here alongsidetruncateSessionID, its natural home.internal/syncutil/ttl_cache_test.go— 9 tests covering cache hit/miss, TTL eviction (fake clock + real-time), LRU ordering, last-used refresh on hit, concurrent access, andmaxSize=1edge case.internal/server/routed_test.go—TestFilteredServerCache_MaxSizeandTestFilteredServerCache_TTLEvictionremoved; equivalent coverage migrated tosyncutil/ttl_cache_test.go.