feat: require Redis pool with .with interface

feat: require Redis pool with .with interface

The Evaluator now expects the configured Redis object to respond to .with { |conn| }, wrapping all Redis operations in a single pool checkout. This ensures proper connection pool usage under Puma's multi-threaded workers.

Previously the evaluator called .incr and .expire directly on the redis object, which does not work with connection pool wrappers like Gitlab::Redis::RateLimiting that require .with for pool checkout.

A PooledRedis test helper wraps instance_double(Redis) and FakeRedis with a .with interface for specs. All test files updated to use raw_redis / fake_redis for the underlying client and redis for the pool wrapper.

!274 (comment 3302529826)

Merge request reports

Loading
Loading