Skip to content

[release/9.0] Update dependencies from dotnet/arcade#27

Open
tomerqodo wants to merge 7 commits into
coderabbit_full_base_release_90_update_dependencies_from_dotnet_arcade_pr2from
coderabbit_full_head_release_90_update_dependencies_from_dotnet_arcade_pr2
Open

[release/9.0] Update dependencies from dotnet/arcade#27
tomerqodo wants to merge 7 commits into
coderabbit_full_base_release_90_update_dependencies_from_dotnet_arcade_pr2from
coderabbit_full_head_release_90_update_dependencies_from_dotnet_arcade_pr2

Conversation

@tomerqodo

@tomerqodo tomerqodo commented Jan 28, 2026

Copy link
Copy Markdown

Benchmark PR from agentic-review-benchmarks#2

Summary by CodeRabbit

  • Chores
    • Updated .NET Arcade SDK and related build tool dependencies to version 9.0.0-beta.25626.6
    • Updated build infrastructure and CI/CD tooling configuration for improved compatibility and resource handling
    • Marked known test issues for tracking

✏️ Tip: You can customize this high-level summary in your review settings.

dotnet-maestro Bot and others added 7 commits January 25, 2026 11:58
…127.5

On relative base path root
Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.RemoteExecutor From Version 9.0.0-beta.25562.4 -> To Version 9.0.0-beta.25577.5
…211.4

On relative base path root
Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.RemoteExecutor From Version 9.0.0-beta.25562.4 -> To Version 9.0.0-beta.25611.4
…226.6

On relative base path root
Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.RemoteExecutor From Version 9.0.0-beta.25562.4 -> To Version 9.0.0-beta.25626.6
@coderabbitai

coderabbitai Bot commented Jan 28, 2026

Copy link
Copy Markdown

Walkthrough

Multiple .NET Arcade SDK dependencies updated to version 9.0.0-beta.25626.6 with SHA refreshes. Build infrastructure updated with pool image changes, branch conditionals, and internal feed redirects. PowerShell scripts modified with basic parsing flags and Visual Studio requirement handling. Test suites updated with regex patterns, quarantine markers, and WebSocketWrapper refactoring.

Changes

Cohort / File(s) Summary
Dependency and Version Updates
eng/Version.Details.xml, eng/Versions.props, global.json
Bump Microsoft.DotNet.Arcade.Sdk, Microsoft.DotNet.Helix.Sdk, and related build tasks from 9.0.0-beta.25562.4 to 9.0.0-beta.25626.6; update corresponding SHA hashes across manifest files.
Build Infrastructure Configuration
eng/common/core-templates/job/source-build.yml, eng/common/core-templates/job/source-index-stage1.yml, eng/common/core-templates/steps/source-build.yml
Update pool image from 1es-mariner-2 to 1es-azurelinux-3; add main branch condition to source-index stage1 job; redirect internal runtime feed to https://ci.dot.net/internal.
PowerShell Script Enhancements
eng/common/internal-feed-operations.ps1, eng/common/post-build/nuget-verification.ps1, eng/common/tools.ps1
Add -UseBasicParsing flag to Invoke-WebRequest calls; add guarded handling for missing VS requirements with fallback to GlobalJson.tools.vs in LocateVisualStudio.
Test Suite Modifications
src/Components/test/E2ETest/ServerExecutionTests/WebSocketCompressionTests.cs
Replace single GeneratedRegex ParseErrorMessage() with dual regex patterns (old and new framing); update assertion to validate against both CSP error message formats.
SignalR Test Infrastructure
src/SignalR/server/StackExchangeRedis/test/RedisEndToEnd.cs
Add quarantine markers to flagged tests; swap connection disposal order in CanSendAndReceiveUserMessagesFromMultipleConnectionsWithSameUser; remove sealed modifier from WebSocketWrapper; consolidate TaskCompletionSource reset logic in ReceiveAsync.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Poem

🐰 With versions bumped and feeds redirected,
Azure pools and branches guarded,
Web requests now parse with care,
WebSockets dance without a sealed square,
Build pipelines bound for glory awaits!

🚥 Pre-merge checks | ✅ 1 | ❌ 2
❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description is minimal and does not follow the required template structure, missing Summary, Description section, and checklist items. Provide a proper description following the template: include summary (under 80 chars), detailed description of changes, and contributor checklist items.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The PR title accurately describes the main change: updating dependencies from dotnet/arcade, which is reflected across multiple files in the changeset.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In
`@src/Components/test/E2ETest/ServerExecutionTests/WebSocketCompressionTests.cs`:
- Around line 107-110: The assertion in WebSocketCompressionTests.cs currently
requires the log message to match both ParseErrorMessageRegexOld and
ParseErrorMessageRegexNew (using &&) which is wrong; update the Assert.True call
in the test (the line referencing Assert.True, ParseErrorMessageRegexOld, and
ParseErrorMessageRegexNew) to use the logical OR (||) so the assertion passes if
the message matches either regex; keep the existing failure message text or
adjust it to reflect "either" pattern if you prefer.
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 07803ab and b71ad44.

📒 Files selected for processing (11)
  • eng/Version.Details.xml
  • eng/Versions.props
  • eng/common/core-templates/job/source-build.yml
  • eng/common/core-templates/job/source-index-stage1.yml
  • eng/common/core-templates/steps/source-build.yml
  • eng/common/internal-feed-operations.ps1
  • eng/common/post-build/nuget-verification.ps1
  • eng/common/tools.ps1
  • global.json
  • src/Components/test/E2ETest/ServerExecutionTests/WebSocketCompressionTests.cs
  • src/SignalR/server/StackExchangeRedis/test/RedisEndToEnd.cs
🧰 Additional context used
🧬 Code graph analysis (1)
src/Components/test/E2ETest/ServerExecutionTests/WebSocketCompressionTests.cs (1)
src/Shared/Http2cat/Http2Utilities.cs (2)
  • Assert (1003-1044)
  • True (1005-1011)
🔇 Additional comments (15)
eng/common/post-build/nuget-verification.ps1 (1)

68-68: LGTM!

Adding -UseBasicParsing to Invoke-WebRequest is a best practice for CI/build environments. It avoids dependency on Internet Explorer's DOM parsing engine, which may not be available in headless or server environments, improving reliability.

global.json (1)

30-31: LGTM!

The SDK version updates to 9.0.0-beta.25626.6 are consistent for both Microsoft.DotNet.Arcade.Sdk and Microsoft.DotNet.Helix.Sdk, aligning with the related version updates in eng/Version.Details.xml and eng/Versions.props.

eng/common/core-templates/job/source-build.yml (1)

68-68: LGTM!

Updating the pool image from 1es-mariner-2 to 1es-azurelinux-3 reflects Microsoft's rebranding and evolution from CBL-Mariner to Azure Linux. Azure Linux 3 is the current supported version for 1ES pools.

eng/common/internal-feed-operations.ps1 (1)

29-29: LGTM!

Adding -UseBasicParsing to the credential provider download is consistent with the other PowerShell script updates in this PR, ensuring reliable web requests in CI environments without IE dependencies.

eng/common/core-templates/steps/source-build.yml (1)

44-44: LGTM!

The internal runtime source feed URL change from blob storage to https://ci.dot.net/internal aligns with the broader infrastructure updates in this PR. The authentication key variable remains unchanged, indicating credential compatibility.

eng/common/core-templates/job/source-index-stage1.yml (1)

9-9: Behavioral change: default condition now restricts execution to main branch.

The default condition parameter changed from an empty string (unconditional execution) to eq(variables['Build.SourceBranch'], 'refs/heads/main'). This means the source-index stage1 job will now only run on the main branch by default.

Repositories consuming this template without explicitly specifying a condition parameter will see this job skipped on non-main branches. If this is intentional to reduce unnecessary indexing workloads, the change is reasonable. If any consumers depend on the previous unconditional default behavior, they will need to override this parameter.

src/Components/test/E2ETest/ServerExecutionTests/WebSocketCompressionTests.cs (1)

113-117: No additional feedback.

src/SignalR/server/StackExchangeRedis/test/RedisEndToEnd.cs (5)

92-93: Quarantine marker looks good.


188-189: Quarantine marker looks good.


213-214: Cleanup order looks fine.


362-362: Unsealing the wrapper is fine.


406-410: TCS reset placement looks good.

eng/Versions.props (1)

169-172: The Arcade version 9.0.0-beta.25626.6 is consistent across all configuration files. The four entries in eng/Versions.props (lines 169-172) match their corresponding dependencies in eng/Version.Details.xml and are properly reflected in global.json's msbuild-sdks configuration.

eng/common/tools.ps1 (2)

550-575: No action needed.

The only call site to LocateVisualStudio (in InitializeVisualStudioMSBuild) always explicitly initializes $vsRequirements before passing it to the function. No callers depend on implicit VS requirements from LocateVisualStudio since the function's sole caller ensures explicit requirements are always provided.

Likely an incorrect or invalid review comment.


267-270: The -UseBasicParsing flag is safe and supported across all current PowerShell versions.

-UseBasicParsing is fully accepted in both Windows PowerShell 5.1 and PowerShell 7+. While Microsoft deprecated it and made it a no-op in PowerShell 6.0+ (basic parsing is now the default), it remains supported for backward compatibility and will not cause runtime failures. Using it ensures consistent behavior across PowerShell versions, so no action is needed.

Likely an incorrect or invalid review comment.

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.

Comment on lines +107 to +110
Assert.True(
ParseErrorMessageRegexOld.IsMatch(logs[0].Message) &&
ParseErrorMessageRegexNew.IsMatch(logs[0].Message),
$"Expected log message to match one of the CSP error patterns: {ParseErrorMessageRegexOld} or {ParseErrorMessageRegexNew}. Actual: {logs[0].Message}");

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Use OR when matching either CSP pattern.

The condition requires a log message to match both patterns, which is effectively impossible here. Use || to match either pattern as the message says.

🛠️ Proposed fix
-        Assert.True(
-            ParseErrorMessageRegexOld.IsMatch(logs[0].Message) &&
-            ParseErrorMessageRegexNew.IsMatch(logs[0].Message),
+        Assert.True(
+            ParseErrorMessageRegexOld.IsMatch(logs[0].Message) ||
+            ParseErrorMessageRegexNew.IsMatch(logs[0].Message),
             $"Expected log message to match one of the CSP error patterns: {ParseErrorMessageRegexOld} or {ParseErrorMessageRegexNew}. Actual: {logs[0].Message}");
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Assert.True(
ParseErrorMessageRegexOld.IsMatch(logs[0].Message) &&
ParseErrorMessageRegexNew.IsMatch(logs[0].Message),
$"Expected log message to match one of the CSP error patterns: {ParseErrorMessageRegexOld} or {ParseErrorMessageRegexNew}. Actual: {logs[0].Message}");
Assert.True(
ParseErrorMessageRegexOld.IsMatch(logs[0].Message) ||
ParseErrorMessageRegexNew.IsMatch(logs[0].Message),
$"Expected log message to match one of the CSP error patterns: {ParseErrorMessageRegexOld} or {ParseErrorMessageRegexNew}. Actual: {logs[0].Message}");
🤖 Prompt for AI Agents
In
`@src/Components/test/E2ETest/ServerExecutionTests/WebSocketCompressionTests.cs`
around lines 107 - 110, The assertion in WebSocketCompressionTests.cs currently
requires the log message to match both ParseErrorMessageRegexOld and
ParseErrorMessageRegexNew (using &&) which is wrong; update the Assert.True call
in the test (the line referencing Assert.True, ParseErrorMessageRegexOld, and
ParseErrorMessageRegexNew) to use the logical OR (||) so the assertion passes if
the message matches either regex; keep the existing failure message text or
adjust it to reflect "either" pattern if you prefer.

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.

4 participants