Increase FileSystemWatcher test event timeout to 1000ms - #125744

Merged
lewing merged 1 commit into
dotnet:mainfrom
lewing:fix/fsw-increase-timeout-v2
Mar 19, 2026
Merged

Increase FileSystemWatcher test event timeout to 1000ms#125744
lewing merged 1 commit into
dotnet:mainfrom
lewing:fix/fsw-increase-timeout-v2

Conversation

@lewing

Copy link
Copy Markdown
Member

Increase WaitForExpectedEventTimeout from 500ms to 1000ms per @tmds suggestion in #125740 (comment).

The inotify refactor (#117148) changed stop/start timing for watches, which can delay event delivery under stress conditions. The 500ms timeout is too tight for jitstress runs on slower hardware (arm32), causing false failures in SymbolicLink tests that are being incorrectly attributed to #103630.

This is a single constant change that affects 94 tests using the default ExpectEvent timeout. It should help distinguish timing issues from functional bugs.

Ref: #125737, #125740

/cc @tmds@adamsitnik@jozkee

The inotify refactor (dotnet#117148) changed stop/start timing for watches,
which can delay event delivery under stress. The 500ms timeout is too
tight for jitstress runs on slower hardware (arm32), causing false
failures in SymbolicLink tests.
Double the timeout from 500ms to 1000ms to better distinguish timing
issues from functional bugs. This affects 94 tests that use the default
ExpectEvent timeout.
Ref: dotnet#125737
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings March 18, 2026 19:44
@lewing
lewing requested review from adamsitnik and tmdsMarch 18, 2026 19:45
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/area-system-io
See info in area-owners.md if you want to be subscribed.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR increases the default wait timeout used by FileSystemWatcher test utilities to reduce Linux (notably arm32 jitstress) timing-related flakiness after the inotify refactor.

Changes:

  • Increase WaitForExpectedEventTimeout from 500ms to 1000ms in the FileSystemWatcher test base helper.
Comments suppressed due to low confidence (1)

src/libraries/System.IO.FileSystem.Watcher/tests/Utility/FileSystemWatcherTest.cs:28

  • Raising WaitForExpectedEventTimeout will also increase the default wait for negative assertions and fixed sleeps that use this constant (e.g., ExpectNoEvent has a default timeout = WaitForExpectedEventTimeout, and some tests call Thread.Sleep(WaitForExpectedEventTimeout)). That can add ~500ms per such call to successful test runs. Consider keeping WaitForExpectedEventTimeout scoped to expected events only (e.g., change ExpectNoEvent’s default to WaitForUnexpectedEventTimeout, or introduce a separate constant for the longer expected-event wait) so the flakiness fix doesn’t unnecessarily slow the suite.
 public const int WaitForExpectedEventTimeout = 1000; // ms to wait for an event to happen
public const int LongWaitTimeout = 50000; // ms to wait for an event that takes a longer time than the average operation
public const int SubsequentExpectedWait = 10; // ms to wait for checks that occur after the first.
public const int WaitForExpectedEventTimeout_NoRetry = 3000;// ms to wait for an event that isn't surrounded by a retry.
public const int WaitForUnexpectedEventTimeout = 150; // ms to wait for a non-expected event.

You can also share your feedback on Copilot code review. Take the survey.

@adamsitnikadamsitnik left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, big thanks for fixing it @lewing !

@lewing
lewing enabled auto-merge (squash) March 18, 2026 20:59
@lewing

Copy link
Copy Markdown
MemberAuthor

/ba-g failures are infrastructure and actively being resolved

@lewing
lewing merged commit 0d2f781 into dotnet:mainMar 19, 2026
79 of 92 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Apr 18, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@lewing@steveisok@tmds@adamsitnik
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Increase FileSystemWatcher test event timeout to 1000ms - #125744

Merged
lewing merged 1 commit into
dotnet:mainfrom
lewing:fix/fsw-increase-timeout-v2
Mar 19, 2026
Merged

Increase FileSystemWatcher test event timeout to 1000ms#125744
lewing merged 1 commit into
dotnet:mainfrom
lewing:fix/fsw-increase-timeout-v2

Conversation

@lewing

Copy link
Copy Markdown
Member

Increase WaitForExpectedEventTimeout from 500ms to 1000ms per @tmds suggestion in #125740 (comment).

The inotify refactor (#117148) changed stop/start timing for watches, which can delay event delivery under stress conditions. The 500ms timeout is too tight for jitstress runs on slower hardware (arm32), causing false failures in SymbolicLink tests that are being incorrectly attributed to #103630.

This is a single constant change that affects 94 tests using the default ExpectEvent timeout. It should help distinguish timing issues from functional bugs.

Ref: #125737, #125740

/cc @tmds@adamsitnik@jozkee

The inotify refactor (dotnet#117148) changed stop/start timing for watches,
which can delay event delivery under stress. The 500ms timeout is too
tight for jitstress runs on slower hardware (arm32), causing false
failures in SymbolicLink tests.
Double the timeout from 500ms to 1000ms to better distinguish timing
issues from functional bugs. This affects 94 tests that use the default
ExpectEvent timeout.
Ref: dotnet#125737
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings March 18, 2026 19:44
@lewing
lewing requested review from adamsitnik and tmdsMarch 18, 2026 19:45
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/area-system-io
See info in area-owners.md if you want to be subscribed.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR increases the default wait timeout used by FileSystemWatcher test utilities to reduce Linux (notably arm32 jitstress) timing-related flakiness after the inotify refactor.

Changes:

  • Increase WaitForExpectedEventTimeout from 500ms to 1000ms in the FileSystemWatcher test base helper.
Comments suppressed due to low confidence (1)

src/libraries/System.IO.FileSystem.Watcher/tests/Utility/FileSystemWatcherTest.cs:28

  • Raising WaitForExpectedEventTimeout will also increase the default wait for negative assertions and fixed sleeps that use this constant (e.g., ExpectNoEvent has a default timeout = WaitForExpectedEventTimeout, and some tests call Thread.Sleep(WaitForExpectedEventTimeout)). That can add ~500ms per such call to successful test runs. Consider keeping WaitForExpectedEventTimeout scoped to expected events only (e.g., change ExpectNoEvent’s default to WaitForUnexpectedEventTimeout, or introduce a separate constant for the longer expected-event wait) so the flakiness fix doesn’t unnecessarily slow the suite.
 public const int WaitForExpectedEventTimeout = 1000; // ms to wait for an event to happen
public const int LongWaitTimeout = 50000; // ms to wait for an event that takes a longer time than the average operation
public const int SubsequentExpectedWait = 10; // ms to wait for checks that occur after the first.
public const int WaitForExpectedEventTimeout_NoRetry = 3000;// ms to wait for an event that isn't surrounded by a retry.
public const int WaitForUnexpectedEventTimeout = 150; // ms to wait for a non-expected event.

You can also share your feedback on Copilot code review. Take the survey.

@adamsitnikadamsitnik left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, big thanks for fixing it @lewing !

@lewing
lewing enabled auto-merge (squash) March 18, 2026 20:59
@lewing

Copy link
Copy Markdown
MemberAuthor

/ba-g failures are infrastructure and actively being resolved

@lewing
lewing merged commit 0d2f781 into dotnet:mainMar 19, 2026
79 of 92 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Apr 18, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@lewing@steveisok@tmds@adamsitnik
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Increase FileSystemWatcher test event timeout to 1000ms - #125744

Merged
lewing merged 1 commit into
dotnet:mainfrom
lewing:fix/fsw-increase-timeout-v2
Mar 19, 2026
Merged

Increase FileSystemWatcher test event timeout to 1000ms#125744
lewing merged 1 commit into
dotnet:mainfrom
lewing:fix/fsw-increase-timeout-v2

Conversation

@lewing

Copy link
Copy Markdown
Member

Increase WaitForExpectedEventTimeout from 500ms to 1000ms per @tmds suggestion in #125740 (comment).

The inotify refactor (#117148) changed stop/start timing for watches, which can delay event delivery under stress conditions. The 500ms timeout is too tight for jitstress runs on slower hardware (arm32), causing false failures in SymbolicLink tests that are being incorrectly attributed to #103630.

This is a single constant change that affects 94 tests using the default ExpectEvent timeout. It should help distinguish timing issues from functional bugs.

Ref: #125737, #125740

/cc @tmds@adamsitnik@jozkee

The inotify refactor (dotnet#117148) changed stop/start timing for watches,
which can delay event delivery under stress. The 500ms timeout is too
tight for jitstress runs on slower hardware (arm32), causing false
failures in SymbolicLink tests.
Double the timeout from 500ms to 1000ms to better distinguish timing
issues from functional bugs. This affects 94 tests that use the default
ExpectEvent timeout.
Ref: dotnet#125737
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings March 18, 2026 19:44
@lewing
lewing requested review from adamsitnik and tmdsMarch 18, 2026 19:45
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/area-system-io
See info in area-owners.md if you want to be subscribed.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR increases the default wait timeout used by FileSystemWatcher test utilities to reduce Linux (notably arm32 jitstress) timing-related flakiness after the inotify refactor.

Changes:

  • Increase WaitForExpectedEventTimeout from 500ms to 1000ms in the FileSystemWatcher test base helper.
Comments suppressed due to low confidence (1)

src/libraries/System.IO.FileSystem.Watcher/tests/Utility/FileSystemWatcherTest.cs:28

  • Raising WaitForExpectedEventTimeout will also increase the default wait for negative assertions and fixed sleeps that use this constant (e.g., ExpectNoEvent has a default timeout = WaitForExpectedEventTimeout, and some tests call Thread.Sleep(WaitForExpectedEventTimeout)). That can add ~500ms per such call to successful test runs. Consider keeping WaitForExpectedEventTimeout scoped to expected events only (e.g., change ExpectNoEvent’s default to WaitForUnexpectedEventTimeout, or introduce a separate constant for the longer expected-event wait) so the flakiness fix doesn’t unnecessarily slow the suite.
 public const int WaitForExpectedEventTimeout = 1000; // ms to wait for an event to happen
public const int LongWaitTimeout = 50000; // ms to wait for an event that takes a longer time than the average operation
public const int SubsequentExpectedWait = 10; // ms to wait for checks that occur after the first.
public const int WaitForExpectedEventTimeout_NoRetry = 3000;// ms to wait for an event that isn't surrounded by a retry.
public const int WaitForUnexpectedEventTimeout = 150; // ms to wait for a non-expected event.

You can also share your feedback on Copilot code review. Take the survey.

@adamsitnikadamsitnik left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, big thanks for fixing it @lewing !

@lewing
lewing enabled auto-merge (squash) March 18, 2026 20:59
@lewing

Copy link
Copy Markdown
MemberAuthor

/ba-g failures are infrastructure and actively being resolved

@lewing
lewing merged commit 0d2f781 into dotnet:mainMar 19, 2026
79 of 92 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Apr 18, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@lewing@steveisok@tmds@adamsitnik
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Increase FileSystemWatcher test event timeout to 1000ms - #125744

Merged
lewing merged 1 commit into
dotnet:mainfrom
lewing:fix/fsw-increase-timeout-v2
Mar 19, 2026
Merged

Increase FileSystemWatcher test event timeout to 1000ms#125744
lewing merged 1 commit into
dotnet:mainfrom
lewing:fix/fsw-increase-timeout-v2

Conversation

@lewing

Copy link
Copy Markdown
Member

Increase WaitForExpectedEventTimeout from 500ms to 1000ms per @tmds suggestion in #125740 (comment).

The inotify refactor (#117148) changed stop/start timing for watches, which can delay event delivery under stress conditions. The 500ms timeout is too tight for jitstress runs on slower hardware (arm32), causing false failures in SymbolicLink tests that are being incorrectly attributed to #103630.

This is a single constant change that affects 94 tests using the default ExpectEvent timeout. It should help distinguish timing issues from functional bugs.

Ref: #125737, #125740

/cc @tmds@adamsitnik@jozkee

The inotify refactor (dotnet#117148) changed stop/start timing for watches,
which can delay event delivery under stress. The 500ms timeout is too
tight for jitstress runs on slower hardware (arm32), causing false
failures in SymbolicLink tests.
Double the timeout from 500ms to 1000ms to better distinguish timing
issues from functional bugs. This affects 94 tests that use the default
ExpectEvent timeout.
Ref: dotnet#125737
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings March 18, 2026 19:44
@lewing
lewing requested review from adamsitnik and tmdsMarch 18, 2026 19:45
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/area-system-io
See info in area-owners.md if you want to be subscribed.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR increases the default wait timeout used by FileSystemWatcher test utilities to reduce Linux (notably arm32 jitstress) timing-related flakiness after the inotify refactor.

Changes:

  • Increase WaitForExpectedEventTimeout from 500ms to 1000ms in the FileSystemWatcher test base helper.
Comments suppressed due to low confidence (1)

src/libraries/System.IO.FileSystem.Watcher/tests/Utility/FileSystemWatcherTest.cs:28

  • Raising WaitForExpectedEventTimeout will also increase the default wait for negative assertions and fixed sleeps that use this constant (e.g., ExpectNoEvent has a default timeout = WaitForExpectedEventTimeout, and some tests call Thread.Sleep(WaitForExpectedEventTimeout)). That can add ~500ms per such call to successful test runs. Consider keeping WaitForExpectedEventTimeout scoped to expected events only (e.g., change ExpectNoEvent’s default to WaitForUnexpectedEventTimeout, or introduce a separate constant for the longer expected-event wait) so the flakiness fix doesn’t unnecessarily slow the suite.
 public const int WaitForExpectedEventTimeout = 1000; // ms to wait for an event to happen
public const int LongWaitTimeout = 50000; // ms to wait for an event that takes a longer time than the average operation
public const int SubsequentExpectedWait = 10; // ms to wait for checks that occur after the first.
public const int WaitForExpectedEventTimeout_NoRetry = 3000;// ms to wait for an event that isn't surrounded by a retry.
public const int WaitForUnexpectedEventTimeout = 150; // ms to wait for a non-expected event.

You can also share your feedback on Copilot code review. Take the survey.

@adamsitnikadamsitnik left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, big thanks for fixing it @lewing !

@lewing
lewing enabled auto-merge (squash) March 18, 2026 20:59
@lewing

Copy link
Copy Markdown
MemberAuthor

/ba-g failures are infrastructure and actively being resolved

@lewing
lewing merged commit 0d2f781 into dotnet:mainMar 19, 2026
79 of 92 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Apr 18, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@lewing@steveisok@tmds@adamsitnik
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Increase FileSystemWatcher test event timeout to 1000ms - #125744

Merged
lewing merged 1 commit into
dotnet:mainfrom
lewing:fix/fsw-increase-timeout-v2
Mar 19, 2026
Merged

Increase FileSystemWatcher test event timeout to 1000ms#125744
lewing merged 1 commit into
dotnet:mainfrom
lewing:fix/fsw-increase-timeout-v2

Conversation

@lewing

Copy link
Copy Markdown
Member

Increase WaitForExpectedEventTimeout from 500ms to 1000ms per @tmds suggestion in #125740 (comment).

The inotify refactor (#117148) changed stop/start timing for watches, which can delay event delivery under stress conditions. The 500ms timeout is too tight for jitstress runs on slower hardware (arm32), causing false failures in SymbolicLink tests that are being incorrectly attributed to #103630.

This is a single constant change that affects 94 tests using the default ExpectEvent timeout. It should help distinguish timing issues from functional bugs.

Ref: #125737, #125740

/cc @tmds@adamsitnik@jozkee

The inotify refactor (dotnet#117148) changed stop/start timing for watches,
which can delay event delivery under stress. The 500ms timeout is too
tight for jitstress runs on slower hardware (arm32), causing false
failures in SymbolicLink tests.
Double the timeout from 500ms to 1000ms to better distinguish timing
issues from functional bugs. This affects 94 tests that use the default
ExpectEvent timeout.
Ref: dotnet#125737
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings March 18, 2026 19:44
@lewing
lewing requested review from adamsitnik and tmdsMarch 18, 2026 19:45
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/area-system-io
See info in area-owners.md if you want to be subscribed.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR increases the default wait timeout used by FileSystemWatcher test utilities to reduce Linux (notably arm32 jitstress) timing-related flakiness after the inotify refactor.

Changes:

  • Increase WaitForExpectedEventTimeout from 500ms to 1000ms in the FileSystemWatcher test base helper.
Comments suppressed due to low confidence (1)

src/libraries/System.IO.FileSystem.Watcher/tests/Utility/FileSystemWatcherTest.cs:28

  • Raising WaitForExpectedEventTimeout will also increase the default wait for negative assertions and fixed sleeps that use this constant (e.g., ExpectNoEvent has a default timeout = WaitForExpectedEventTimeout, and some tests call Thread.Sleep(WaitForExpectedEventTimeout)). That can add ~500ms per such call to successful test runs. Consider keeping WaitForExpectedEventTimeout scoped to expected events only (e.g., change ExpectNoEvent’s default to WaitForUnexpectedEventTimeout, or introduce a separate constant for the longer expected-event wait) so the flakiness fix doesn’t unnecessarily slow the suite.
 public const int WaitForExpectedEventTimeout = 1000; // ms to wait for an event to happen
public const int LongWaitTimeout = 50000; // ms to wait for an event that takes a longer time than the average operation
public const int SubsequentExpectedWait = 10; // ms to wait for checks that occur after the first.
public const int WaitForExpectedEventTimeout_NoRetry = 3000;// ms to wait for an event that isn't surrounded by a retry.
public const int WaitForUnexpectedEventTimeout = 150; // ms to wait for a non-expected event.

You can also share your feedback on Copilot code review. Take the survey.

@adamsitnikadamsitnik left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, big thanks for fixing it @lewing !

@lewing
lewing enabled auto-merge (squash) March 18, 2026 20:59
@lewing

Copy link
Copy Markdown
MemberAuthor

/ba-g failures are infrastructure and actively being resolved

@lewing
lewing merged commit 0d2f781 into dotnet:mainMar 19, 2026
79 of 92 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Apr 18, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@lewing@steveisok@tmds@adamsitnik
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Increase FileSystemWatcher test event timeout to 1000ms - #125744

Merged
lewing merged 1 commit into
dotnet:mainfrom
lewing:fix/fsw-increase-timeout-v2
Mar 19, 2026
Merged

Increase FileSystemWatcher test event timeout to 1000ms#125744
lewing merged 1 commit into
dotnet:mainfrom
lewing:fix/fsw-increase-timeout-v2

Conversation

@lewing

Copy link
Copy Markdown
Member

Increase WaitForExpectedEventTimeout from 500ms to 1000ms per @tmds suggestion in #125740 (comment).

The inotify refactor (#117148) changed stop/start timing for watches, which can delay event delivery under stress conditions. The 500ms timeout is too tight for jitstress runs on slower hardware (arm32), causing false failures in SymbolicLink tests that are being incorrectly attributed to #103630.

This is a single constant change that affects 94 tests using the default ExpectEvent timeout. It should help distinguish timing issues from functional bugs.

Ref: #125737, #125740

/cc @tmds@adamsitnik@jozkee

The inotify refactor (dotnet#117148) changed stop/start timing for watches,
which can delay event delivery under stress. The 500ms timeout is too
tight for jitstress runs on slower hardware (arm32), causing false
failures in SymbolicLink tests.
Double the timeout from 500ms to 1000ms to better distinguish timing
issues from functional bugs. This affects 94 tests that use the default
ExpectEvent timeout.
Ref: dotnet#125737
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings March 18, 2026 19:44
@lewing
lewing requested review from adamsitnik and tmdsMarch 18, 2026 19:45
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/area-system-io
See info in area-owners.md if you want to be subscribed.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR increases the default wait timeout used by FileSystemWatcher test utilities to reduce Linux (notably arm32 jitstress) timing-related flakiness after the inotify refactor.

Changes:

  • Increase WaitForExpectedEventTimeout from 500ms to 1000ms in the FileSystemWatcher test base helper.
Comments suppressed due to low confidence (1)

src/libraries/System.IO.FileSystem.Watcher/tests/Utility/FileSystemWatcherTest.cs:28

  • Raising WaitForExpectedEventTimeout will also increase the default wait for negative assertions and fixed sleeps that use this constant (e.g., ExpectNoEvent has a default timeout = WaitForExpectedEventTimeout, and some tests call Thread.Sleep(WaitForExpectedEventTimeout)). That can add ~500ms per such call to successful test runs. Consider keeping WaitForExpectedEventTimeout scoped to expected events only (e.g., change ExpectNoEvent’s default to WaitForUnexpectedEventTimeout, or introduce a separate constant for the longer expected-event wait) so the flakiness fix doesn’t unnecessarily slow the suite.
 public const int WaitForExpectedEventTimeout = 1000; // ms to wait for an event to happen
public const int LongWaitTimeout = 50000; // ms to wait for an event that takes a longer time than the average operation
public const int SubsequentExpectedWait = 10; // ms to wait for checks that occur after the first.
public const int WaitForExpectedEventTimeout_NoRetry = 3000;// ms to wait for an event that isn't surrounded by a retry.
public const int WaitForUnexpectedEventTimeout = 150; // ms to wait for a non-expected event.

You can also share your feedback on Copilot code review. Take the survey.

@adamsitnikadamsitnik left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, big thanks for fixing it @lewing !

@lewing
lewing enabled auto-merge (squash) March 18, 2026 20:59
@lewing

Copy link
Copy Markdown
MemberAuthor

/ba-g failures are infrastructure and actively being resolved

@lewing
lewing merged commit 0d2f781 into dotnet:mainMar 19, 2026
79 of 92 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Apr 18, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@lewing@steveisok@tmds@adamsitnik
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Increase FileSystemWatcher test event timeout to 1000ms - #125744

Merged
lewing merged 1 commit into
dotnet:mainfrom
lewing:fix/fsw-increase-timeout-v2
Mar 19, 2026
Merged

Increase FileSystemWatcher test event timeout to 1000ms#125744
lewing merged 1 commit into
dotnet:mainfrom
lewing:fix/fsw-increase-timeout-v2

Conversation

@lewing

Copy link
Copy Markdown
Member

Increase WaitForExpectedEventTimeout from 500ms to 1000ms per @tmds suggestion in #125740 (comment).

The inotify refactor (#117148) changed stop/start timing for watches, which can delay event delivery under stress conditions. The 500ms timeout is too tight for jitstress runs on slower hardware (arm32), causing false failures in SymbolicLink tests that are being incorrectly attributed to #103630.

This is a single constant change that affects 94 tests using the default ExpectEvent timeout. It should help distinguish timing issues from functional bugs.

Ref: #125737, #125740

/cc @tmds@adamsitnik@jozkee

The inotify refactor (dotnet#117148) changed stop/start timing for watches,
which can delay event delivery under stress. The 500ms timeout is too
tight for jitstress runs on slower hardware (arm32), causing false
failures in SymbolicLink tests.
Double the timeout from 500ms to 1000ms to better distinguish timing
issues from functional bugs. This affects 94 tests that use the default
ExpectEvent timeout.
Ref: dotnet#125737
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings March 18, 2026 19:44
@lewing
lewing requested review from adamsitnik and tmdsMarch 18, 2026 19:45
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/area-system-io
See info in area-owners.md if you want to be subscribed.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR increases the default wait timeout used by FileSystemWatcher test utilities to reduce Linux (notably arm32 jitstress) timing-related flakiness after the inotify refactor.

Changes:

  • Increase WaitForExpectedEventTimeout from 500ms to 1000ms in the FileSystemWatcher test base helper.
Comments suppressed due to low confidence (1)

src/libraries/System.IO.FileSystem.Watcher/tests/Utility/FileSystemWatcherTest.cs:28

  • Raising WaitForExpectedEventTimeout will also increase the default wait for negative assertions and fixed sleeps that use this constant (e.g., ExpectNoEvent has a default timeout = WaitForExpectedEventTimeout, and some tests call Thread.Sleep(WaitForExpectedEventTimeout)). That can add ~500ms per such call to successful test runs. Consider keeping WaitForExpectedEventTimeout scoped to expected events only (e.g., change ExpectNoEvent’s default to WaitForUnexpectedEventTimeout, or introduce a separate constant for the longer expected-event wait) so the flakiness fix doesn’t unnecessarily slow the suite.
 public const int WaitForExpectedEventTimeout = 1000; // ms to wait for an event to happen
public const int LongWaitTimeout = 50000; // ms to wait for an event that takes a longer time than the average operation
public const int SubsequentExpectedWait = 10; // ms to wait for checks that occur after the first.
public const int WaitForExpectedEventTimeout_NoRetry = 3000;// ms to wait for an event that isn't surrounded by a retry.
public const int WaitForUnexpectedEventTimeout = 150; // ms to wait for a non-expected event.

You can also share your feedback on Copilot code review. Take the survey.

@adamsitnikadamsitnik left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, big thanks for fixing it @lewing !

@lewing
lewing enabled auto-merge (squash) March 18, 2026 20:59
@lewing

Copy link
Copy Markdown
MemberAuthor

/ba-g failures are infrastructure and actively being resolved

@lewing
lewing merged commit 0d2f781 into dotnet:mainMar 19, 2026
79 of 92 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Apr 18, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@lewing@steveisok@tmds@adamsitnik
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Increase FileSystemWatcher test event timeout to 1000ms - #125744

Merged
lewing merged 1 commit into
dotnet:mainfrom
lewing:fix/fsw-increase-timeout-v2
Mar 19, 2026
Merged

Increase FileSystemWatcher test event timeout to 1000ms#125744
lewing merged 1 commit into
dotnet:mainfrom
lewing:fix/fsw-increase-timeout-v2

Conversation

@lewing

Copy link
Copy Markdown
Member

Increase WaitForExpectedEventTimeout from 500ms to 1000ms per @tmds suggestion in #125740 (comment).

The inotify refactor (#117148) changed stop/start timing for watches, which can delay event delivery under stress conditions. The 500ms timeout is too tight for jitstress runs on slower hardware (arm32), causing false failures in SymbolicLink tests that are being incorrectly attributed to #103630.

This is a single constant change that affects 94 tests using the default ExpectEvent timeout. It should help distinguish timing issues from functional bugs.

Ref: #125737, #125740

/cc @tmds@adamsitnik@jozkee

The inotify refactor (dotnet#117148) changed stop/start timing for watches,
which can delay event delivery under stress. The 500ms timeout is too
tight for jitstress runs on slower hardware (arm32), causing false
failures in SymbolicLink tests.
Double the timeout from 500ms to 1000ms to better distinguish timing
issues from functional bugs. This affects 94 tests that use the default
ExpectEvent timeout.
Ref: dotnet#125737
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings March 18, 2026 19:44
@lewing
lewing requested review from adamsitnik and tmdsMarch 18, 2026 19:45
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/area-system-io
See info in area-owners.md if you want to be subscribed.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR increases the default wait timeout used by FileSystemWatcher test utilities to reduce Linux (notably arm32 jitstress) timing-related flakiness after the inotify refactor.

Changes:

  • Increase WaitForExpectedEventTimeout from 500ms to 1000ms in the FileSystemWatcher test base helper.
Comments suppressed due to low confidence (1)

src/libraries/System.IO.FileSystem.Watcher/tests/Utility/FileSystemWatcherTest.cs:28

  • Raising WaitForExpectedEventTimeout will also increase the default wait for negative assertions and fixed sleeps that use this constant (e.g., ExpectNoEvent has a default timeout = WaitForExpectedEventTimeout, and some tests call Thread.Sleep(WaitForExpectedEventTimeout)). That can add ~500ms per such call to successful test runs. Consider keeping WaitForExpectedEventTimeout scoped to expected events only (e.g., change ExpectNoEvent’s default to WaitForUnexpectedEventTimeout, or introduce a separate constant for the longer expected-event wait) so the flakiness fix doesn’t unnecessarily slow the suite.
 public const int WaitForExpectedEventTimeout = 1000; // ms to wait for an event to happen
public const int LongWaitTimeout = 50000; // ms to wait for an event that takes a longer time than the average operation
public const int SubsequentExpectedWait = 10; // ms to wait for checks that occur after the first.
public const int WaitForExpectedEventTimeout_NoRetry = 3000;// ms to wait for an event that isn't surrounded by a retry.
public const int WaitForUnexpectedEventTimeout = 150; // ms to wait for a non-expected event.

You can also share your feedback on Copilot code review. Take the survey.

@adamsitnikadamsitnik left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, big thanks for fixing it @lewing !

@lewing
lewing enabled auto-merge (squash) March 18, 2026 20:59
@lewing

Copy link
Copy Markdown
MemberAuthor

/ba-g failures are infrastructure and actively being resolved

@lewing
lewing merged commit 0d2f781 into dotnet:mainMar 19, 2026
79 of 92 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Apr 18, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@lewing@steveisok@tmds@adamsitnik