Skip to content

fix: delegate reset to decorated adapter instead of clear - #12

Merged
ganzyukv merged 3 commits into
mainfrom
fix/schema-aware-redis-adapter-reset
Oct 8, 2026
Merged

ganzyukv merged 3 commits into
mainfrom
fix/schema-aware-redis-adapter-reset

Conversation

@ganzyukv

@ganzyukv ganzyukv commented Oct 7, 2026 •

Copy link
Copy Markdown

Why

SchemaAwareRedisAdapter::reset() called decorated->clear() after every messenger message. That triggers Redis INFO Server inside Symfony RedisTrait::doClear() and causes periodic Undefined array key "redis_version" warnings in Sentry.

Schema isolation for Redis cache is handled by prefixKey() during read/write operations, using BaggageSchemaResolver (baggage / preview-env header / BaggageSchemaStamp in messenger). It is not handled by reset().

In messenger workers, schema-aware clear($prefix) in reset() does not work as intended: BaggageSchemaMiddleware resets BaggageSchemaResolver in its finally block before ResetServicesListener calls SchemaAwareRedisAdapter::reset(). At that point getSchema() always returns environmentSchema, so the code always executed clear('') — wiping the entire cache_storage* namespace and hitting Redis on every message.

ResettableInterface should reset in-memory adapter state (deferred, ids), not flush Redis.

What Changed

  • reset() delegates to decorated->reset() instead of clear()
  • Added unit test: reset() calls reset
  • Upgraded php_codesniffer to ^3.13 (CVE-2026-67434)
  • Updated phpcs.xml.dist forbidden-functions syntax for PHPCS 3.13

Reviewer Guide

  1. Confirm messenger flow: BaggageSchemaMiddleware cleans schema state; adapter reset() only clears in-memory cache bookkeeping.
  2. Schema prefixing in prefixKey() is unchanged — preview/staging isolation still works during message handling.

Test plan

  • vendor/bin/phpunit
  • vendor/bin/phpstan analyse
  • vendor/bin/phpcs

@ganzyukv
ganzyukv merged commit 523d8d0 into main Oct 8, 2026
10 checks passed
@ganzyukv
ganzyukv deleted the fix/schema-aware-redis-adapter-reset branch October 8, 2026 07:41
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.

2 participants