1 Commits
Author SHA1 Message Date
clawbot c0dd1d140f Serve a cache hit with no database read or write (closes #309)
check / check (push) Canceled after 0s
A hit opens the variant file and nothing else: its content type comes
from the file's first bytes, and a file in no output format is a miss.
Its access time and hit count, and the access time of a cached source a
miss uses, go without waiting to the goroutine that wrote late counts,
which now writes them all once a second; each kind of access time waits
in a channel of 10,000 that drops the rest. checkNegativeCache leaves
expired rows to CleanExpired. The .meta files, metaCache, Lookup and
golang-lru go, with their tests. Dropping the .meta skip made the
variant and source reconciliation walks identical, so they share one.
make bench runs a parallel cache hit benchmark on the host, outside
make check.

Model: opus-5-5
2026-10-21 15:39:29 +00:00
@@ -155,12 +155,11 @@ func TestService_Get_ReturnsByItsDeadlineWhileTheDatabaseIsBusy(t *testing.T) {
waitForCounters(t, svc.cache, cacheStatsCounters{missCount: 1}) waitForCounters(t, svc.cache, cacheStatsCounters{missCount: 1})
} }
// TestIncrementStats_ManyCountsLeaveOneWriteWaiting holds the database's one // TestIncrementStats_ManyCountsPastTheirDeadlineLeaveOneWriteWaiting holds the
// connection while many misses are added to the pending counts, which the // database's one connection while many misses are counted past their
// goroutine StartPendingCountWrites starts writes to the database. At most one // deadline. At most one write may then wait for the connection, and every
// write may then wait for the connection, and every miss must reach the // miss must reach the database once it is free.
// database once it is free. func TestIncrementStats_ManyCountsPastTheirDeadlineLeaveOneWriteWaiting(t *testing.T) {
func TestIncrementStats_ManyCountsLeaveOneWriteWaiting(t *testing.T) {
t.Parallel() t.Parallel()
cache, _ := newEvictionTestCache(t, 1<<30) cache, _ := newEvictionTestCache(t, 1<<30)
@@ -195,9 +194,9 @@ func TestIncrementStats_ManyCountsLeaveOneWriteWaiting(t *testing.T) {
waitForCounters(t, cache, cacheStatsCounters{missCount: misses}) waitForCounters(t, cache, cacheStatsCounters{missCount: misses})
} }
// TestStats_IncludesPendingCounts adds hits and misses to the pending counts, // TestStats_IncludesPendingCounts counts hits and misses whose writes miss
// with no goroutine started to write them, and checks that Stats adds them to // their deadline, and checks that Stats adds them to the database's counts
// the database's counts before they are written. // before they are written.
func TestStats_IncludesPendingCounts(t *testing.T) { func TestStats_IncludesPendingCounts(t *testing.T) {
t.Parallel() t.Parallel()