Skip to content

Cache extensions for async functions#1376

Open
TristonianJones wants to merge 1 commit into
cel-expr:masterfrom
TristonianJones:async-cache
Open

Cache extensions for async functions#1376
TristonianJones wants to merge 1 commit into
cel-expr:masterfrom
TristonianJones:async-cache

Conversation

@TristonianJones

Copy link
Copy Markdown
Collaborator

Add CachedBinding with a pluggable Cache/StaleCache backend, a default
bounded cache, configurable key function, and stale-while-error /
stale-while-revalidate behavior. Errors are not cached.

The default key function keys on string and bool arguments only and
declines to cache calls with numeric or complex arguments (those use a
richer notion of equivalence than a string key can capture safely);
callers needing such caching supply CacheKeyFunc or CustomCache.

The default cache is bounded and TTL-aware, using CLOCK (second-chance)
eviction rather than a strict LRU so that reads do not mutate shared
ordering state: a Get takes only a read lock and sets a per-entry atomic
referenced bit, allowing reads to proceed concurrently, while only Set and
the eviction it triggers take the exclusive lock. The configured size is
respected exactly, and evicting an entry only costs a recomputation on its
next access.

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.

1 participant