From 3eae41d06d1ada6facd2cdeebb9bf18a800e07c2 Mon Sep 17 00:00:00 2001 From: Widthdom Date: Wed, 3 Jun 2026 04:58:33 +0900 Subject: [PATCH] Increase regex timeout headroom for SQL refs #2949 --- changelog.d/unreleased/2949.fixed.md | 16 ++++++++++++++++ src/CodeIndex/Indexer/BoundedRegex.cs | 3 ++- tests/CodeIndex.Tests/BoundedRegexTests.cs | 15 +++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 changelog.d/unreleased/2949.fixed.md create mode 100644 tests/CodeIndex.Tests/BoundedRegexTests.cs diff --git a/changelog.d/unreleased/2949.fixed.md b/changelog.d/unreleased/2949.fixed.md new file mode 100644 index 0000000000..4845a74c66 --- /dev/null +++ b/changelog.d/unreleased/2949.fixed.md @@ -0,0 +1,16 @@ +--- +category: fixed +issues: + - 2949 +affected: + - src/CodeIndex/Indexer/BoundedRegex.cs + - tests/CodeIndex.Tests/BoundedRegexTests.cs +--- + +## English + +- **SQL reference extraction is less likely to drop matches under full-suite CPU contention (#2949)** - bounded regex matching now keeps a larger but still finite default timeout, reducing intermittent missed SQL references during heavily loaded test and indexing runs. + +## 日本語 + +- **full-suite の CPU 競合下で SQL reference 抽出が match を落としにくくなりました (#2949)** - bounded regex matching の既定 timeout を、有限のまま余裕を持たせた値に変更し、高負荷なテスト実行や index 実行中に SQL reference が断続的に欠ける問題を減らしました。 diff --git a/src/CodeIndex/Indexer/BoundedRegex.cs b/src/CodeIndex/Indexer/BoundedRegex.cs index daec250045..325cc7a37f 100644 --- a/src/CodeIndex/Indexer/BoundedRegex.cs +++ b/src/CodeIndex/Indexer/BoundedRegex.cs @@ -6,7 +6,8 @@ namespace CodeIndex.Indexer; internal sealed class BoundedRegex : BclRegex { - internal static readonly TimeSpan DefaultMatchTimeout = TimeSpan.FromMilliseconds(250); + // Keep regex matches bounded, but leave enough scheduler headroom for full-suite CI contention. + internal static readonly TimeSpan DefaultMatchTimeout = TimeSpan.FromSeconds(1); public BoundedRegex(string pattern) : base(pattern, RegexOptions.None, DefaultMatchTimeout) diff --git a/tests/CodeIndex.Tests/BoundedRegexTests.cs b/tests/CodeIndex.Tests/BoundedRegexTests.cs new file mode 100644 index 0000000000..6b1ed8026d --- /dev/null +++ b/tests/CodeIndex.Tests/BoundedRegexTests.cs @@ -0,0 +1,15 @@ +using CodeIndex.Indexer; + +namespace CodeIndex.Tests; + +public sealed class BoundedRegexTests +{ + [Fact] + public void DefaultMatchTimeout_KeepsBoundedMatchesFromTimingOutUnderNormalSchedulerContention() + { + Assert.InRange( + BoundedRegex.DefaultMatchTimeout, + TimeSpan.FromSeconds(1), + TimeSpan.FromSeconds(5)); + } +}