Commit Graph

5 Commits

Author SHA1 Message Date
70d96cebac style: clear the last lint findings on #55's code
- goconst: extracted testVariantKeyTwo alongside testVariantKeyOne.
- paralleltest: t.Parallel() on
  TestEvictSourceBlobExcludesConcurrentStoreOfIdenticalContent. The test
  asserts that a concurrent store stays blocked for 200ms while eviction
  holds the content lock; parallel load can only make it more blocked,
  never less, so the assertion does not become timing-fragile. Verified
  over repeated full -race runs.
- gosec G115: a live, justified suppression on the int64 conversion in
  ComputeDefaultCacheMaxBytes. The preceding clamp was an explicit
  if-statement that gosec could follow; the modernize linter requires it
  to be min(), which gosec's range analysis cannot see through. The
  clamp is still there and still correct, so the conversion cannot
  overflow. Unlike the directives removed earlier in this branch, this
  one is live: nolintlint confirms it suppresses a finding that is
  actually raised.
2026-08-09 13:39:49 +00:00
061a3545eb refactor: propagate context into Cache.StoreVariant (noctx)
The size-accounting INSERT in StoreVariant used db.Exec, and
StoreVariant took no context at all, so the write was uncancellable and
untraceable. Rather than paper over that with context.Background() at
the call site, StoreVariant now takes a context.Context and uses
ExecContext.

The plumbing is small: the only production caller is
Service.processAndStore, which already has the request context in
scope, so the accounting insert now shares the lifetime of the request
that produced the variant. Test callers pass t.Context().

The insert remains best-effort: a failure is logged and the startup and
periodic reconciliation passes still adopt any variant file whose
accounting row is missing.
2026-08-09 13:37:12 +00:00
3ef9715054 style: convert inline error handling to plain assignment in #55's tests (noinlineerr) 2026-08-09 13:30:43 +00:00
ca47bb096c style: mechanical lint conformance for #55's code under the canonical config
No behavior changes. Covers the purely mechanical findings the canonical
v2.12.2 config raises on the cache-size/eviction work:

- nolintlint: deleted 7 dead //nolint:gosec directives (cachesize.go x2,
  config.go, eviction.go x2, storage.go x2). gosec never raises G115/G703
  on those lines under the pinned toolchain, exactly the defect class
  that failed round 2 of this PR. The 6 live gosec suppressions are
  untouched.
- funcorder: moved writeIfAbsent after Exists (storage.go) and
  touchVariant/touchSourceContent after IncrementStats (cache.go).
- lll: wrapped over-length signatures, calls and messages at 88 columns.
- paralleltest: t.Parallel() on the new eviction, contentlock and
  cache_max_bytes tests and their subtests. configFromYAML uses only
  t.TempDir, so the config cases are parallel-safe.
- noctx: test helper DB calls now use ExecContext/QueryContext/
  QueryRowContext with t.Context().
- goconst: extracted testHeaderContentType into the shared test constant
  block and testVariantKeyOne into the eviction tests; reused the
  existing testContentTypeJPEG and keyCacheMaxBytes constants.
- modernize: interface{} to any, atomic.Int32 for the contentlock
  counters, min/max in ComputeDefaultCacheMaxBytes.
- intrange: integer range loops in the contentlock tests.
- wsl_v5: whitespace before the contentlock rendezvous statements.
- sloglint: slog.DiscardHandler in the config test logger.
- cyclop/funlen: split TestZeroMaxBytesDisablesDiskCache into four
  assertion helpers and extracted the concurrent store goroutine from
  TestEvictSourceBlobExcludesConcurrentStoreOfIdenticalContent. Every
  assertion is preserved verbatim; only their grouping changed.
2026-08-09 13:28:12 +00:00
6ca8560995 style: rename #55's white-box test files to *_internal_test.go (testpackage) 2026-08-09 13:18:23 +00:00