Practice catalogue updated Tue, Aug 11, 2026

Debug the signal.
Ship the fix.

Production-shaped debugging labs across APIs, config, concurrency, and infrastructure. Reproduce the failure, follow the evidence, and prove the smallest safe change.

Ready labs138playable now
Quick starts99under 20 min
Avg. time18minper lab
OSS labs4public history
01Reproducemake the failure visible
02Tracefollow the evidence
03Patchchange the smallest thing
04Verifyprove it holds
Featured labBuglyst · Caching & Performance

Null bypasses cache validation

A short-circuit on falsy role keys returns a hardcoded default and skips the cache entirely.

Hard22 minJavaScript#track#caching-performance#cache
all labs · ready to play

Choose a failure mode.

Search by symptom, then filter by source, status, or difficulty. The featured lab is highlighted at the top so you always have a strong place to start.

press / to search
Shown19/ 138
19 of 138 labs · "Performance"ready labs · catalogue order
#LabDifficultyTime
115Null bypasses cache validationFeaturedA short-circuit on falsy role keys returns a hardcoded default and skips the cache entirely.0 attempts · 0 solved · 0 discussionsHard22min06Cache StampedeEvery morning at 9AM service slows to a crawl for 90 seconds.1 attempts · 0 solved · 1 discussionsMed.28min15Cache key missing tenant idMulti-tenant cache key uses just user_id, causing cross-tenant leaks.2 attempts · 1 solved · 0 discussionsHard20min19The log that ate the requestA debug log serializes an entire upload payload.1 attempts · 0 solved · 0 discussionsMed.20min20The Price That Refused to UpdateMerchants change a price. Half the storefront still shows yesterday's number.4 attempts · 0 solved · 0 discussionsEasy12min56Cache TTL: ms vs secondsIn-memory cache treats milliseconds as seconds on read, so every entry expires on the next call.0 attempts · 0 solved · 0 discussionsEasy12min57Cache mutation leaks across tenantsCached objects are handed out by reference; one tenant's mutation rewrites what other tenants read.0 attempts · 0 solved · 0 discussionsEasy14min58Negative cache poisoningA null result is cached so aggressively that a freshly created record never becomes visible.1 attempts · 0 solved · 0 discussionsMed.18min59Stale-while-revalidate serves stale foreverThe revalidation branch never calls the fetcher, so cached entries become permanent.0 attempts · 0 solved · 0 discussionsMed.20min60LRU evicts the wrong tenantAn LRU cache evicts the most-recently-used tenant instead of the least-recently-used one.0 attempts · 0 solved · 0 discussionsMed.22min61Tenant prefix skipped on readWrites namespace cache entries by tenant but reads ignore the namespace, so every tenant reads the same entry.0 attempts · 0 solved · 0 discussionsMed.18min62Cache invalidation skipped on writeWrites update the database but the cache is never told, so reads keep returning the old value.0 attempts · 0 solved · 0 discussionsHard28min63Tenant id bleeds through async fetchAn async enrichment step uses a hard-coded tenant label, so every tenant receives the same enriched profile.0 attempts · 0 solved · 0 discussionsHard26min64Multi-tenant cache key prefix missingA cache key utility drops the tenant id, so two tenants with the same resource id share one cached value.0 attempts · 0 solved · 0 discussionsHard30min65Cache key delimiter collisionTwo cache lookups that should be distinct reduce to the same string and overwrite each other.0 attempts · 0 solved · 0 discussionsEasy12min111Cache invalidated before the write commitsUpdate helper primes the cache with the pre-write snapshot, so readers see the old value after every update.2 attempts · 1 solved · 0 discussionsEasy15min112Memoization keyed on object identityA memoized helper uses the query object as the Map key, so logically equal queries always miss the cache.5 attempts · 0 solved · 0 discussionsMed.18min113TTL refreshed on every readA read-time TTL refresh keeps hot entries alive indefinitely and stale data never evicts.1 attempts · 0 solved · 0 discussionsMed.20min114Cache stampede without coalescingConcurrent cold-cache callers each kick off their own expensive compute, overwhelming the worker.1 attempts · 0 solved · 0 discussionsHard25min
discussion · public Practice

What are developers debugging?

Questions, dead ends, and useful investigation clues from real public Practice threads.

latest threads
Loading discussion threads…
real activity · public practice

What developers are doing.

Recent public activity from developers who chose to share their Practice work.

Loading recent public activity…
keep building the loop

More ways to practice.

Move from a focused drill to open-source history or company-style patterns when you want a different kind of debugging pressure.