Skip to content

Warm the settings redactor's patterns before their first timed match (#4348) - #4408

Merged
erikdarlingdata merged 3 commits into
devfrom
fix/4348-redactor-warmup
Sep 26, 2026
Merged

erikdarlingdata merged 3 commits into
devfrom
fix/4348-redactor-warmup

Conversation

@erikdarlingdata

@erikdarlingdata erikdarlingdata commented Sep 26, 2026 •

Copy link
Copy Markdown
Owner

Refs #4348.

The settings redactor's patterns are built with RegexOptions.Compiled and matched under a 100 ms timeout. A compiled pattern's match methods are JIT-compiled on first use. On a busy CI runner, that first-use cost could land inside the first timed match. A short, ordinary value was then masked whole, as if its match had timed out. This showed up once in CI on one of the redactor corpus tests.

What changes

  • PgSettingRedactor's static constructor warms every pattern once, before any real call, on a placeholder sample that reaches each pattern's match step. A timeout during the warm-up is ignored.
  • WarmedUp records that the warm-up ran. Output is unchanged.

Tests

  • Warmup_RanBeforeFirstRealCall_AndShortValueIsNotMaskedWhole: the warm-up ran before the first call returns, and a short value is redacted normally.
  • WarmupSampleMatches: every warmed pattern actually matches the sample, so each one's match step runs during the warm-up.
  • The existing corpus, frozen-parity and forced-timeout tests are unchanged.

CHANGELOG entry

SECTION: Fixed
ENTRY:

@erikdarlingdata
erikdarlingdata marked this pull request as ready for review September 26, 2026 12:01
@erikdarlingdata
erikdarlingdata merged commit dda2b7c into dev Sep 26, 2026
15 of 16 checks passed
@erikdarlingdata
erikdarlingdata deleted the fix/4348-redactor-warmup branch September 26, 2026 12:01
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.

1 participant