Revert "Switch libraries testing to Ubuntu 22 temporarily" - #115312

Closed
richlander wants to merge 1 commit into
mainfrom
revert-114268-azl
Closed

Revert "Switch libraries testing to Ubuntu 22 temporarily"#115312
richlander wants to merge 1 commit into
mainfrom
revert-114268-azl

Conversation

@richlander

Copy link
Copy Markdown
Member

CopilotAI review requested due to automatic review settings May 5, 2025 19:46
@ghostghost added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label May 5, 2025

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 reverts the earlier temporary change that switched libraries testing to Ubuntu 22, restoring the previous helix queue names.

  • Reverts the public helix queue from "Ubuntu.2204.Amd64.Open" to "azurelinux.3.amd64.open".
  • Reverts the internal helix queue from "Ubuntu.2204.Amd64" to "azurelinux.3.amd64".
Comments suppressed due to low confidence (2)

eng/pipelines/coreclr/templates/helix-queues-setup.yml:101

  • [nitpick] Ensure that changing the queue name for the public team project to "azurelinux.3.amd64.open" is consistent with naming conventions used across the pipeline configuration.
- - azurelinux.3.amd64.open

eng/pipelines/coreclr/templates/helix-queues-setup.yml:103

  • [nitpick] Verify that the internal team project queue name "azurelinux.3.amd64" aligns with the established naming patterns in the broader system.
- - azurelinux.3.amd64

@richlander

Copy link
Copy Markdown
MemberAuthor

It looks like the issues are related to timeouts / space limitations. I think we were seeing those before. Did anyone develop any insight on that? I'm not sure how that conversation ended. @mthalman@AndyAyersMS@jkotas@dougbu@agocke

Example:

 System.Net.Mail.Tests.SmtpClientTlsTest_Send.ClientCertificateRequired_Sent [FAIL]
Assert.Null() Failure: Value is not null
Expected: null
Actual: System.Net.Mail.SmtpException: The operation has timed out.
at System.Net.Mail.SmtpClient.Send(MailMessage message) in /_/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpClient.cs:line 521
at System.Net.Mail.Tests.LoopbackServerTestBase`1.SendMailInternal(MailMessage msg, CancellationToken cancellationToken, Nullable`1 asyncExpectDirectException) in /_/src/libraries/System.Net.Mail/tests/Functional/LoopbackServerTestBase.cs:line 74 Stack Trace: /_/src/libraries/System.Net.Mail/tests/Functional/LoopbackServerTestBase.cs(155,0): at System.Net.Mail.Tests.LoopbackServerTestBase`1.SendMail(MailMessage msg, CancellationToken cancellationToken) /_/src/libraries/System.Net.Mail/tests/Functional/SmtpClientTlsTest.cs(159,0): at System.Net.Mail.Tests.SmtpClientTlsTest`1.ClientCertificateRequired_Sent() --- End of stack trace from previous location --- Output: Server> 220 localhost Client> EHLO a000K7N Server> 250-localhost, mock server here> 250-STARTTLS Server> 250 AUTH PLAIN LOGIN Client> STARTTLS Server> 220 Ready to start TLS

https://helixr1107v0xdcypoyl9e7f.blob.core.windows.net/dotnet-runtime-refs-pull-115312-merge-c8aa9ab112ad47839a/System.Net.Mail.Functional.Tests/1/console.46ccc21a.log?helixlogtype=result

@jkotasjkotas added area-System.Net and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels May 6, 2025
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@jkotas

jkotas commented May 6, 2025

Copy link
Copy Markdown
Member

It looks like the issues are related to timeouts / space limitations

The failures are networking related hangs, very similar to the hangs that lead to disabling of Azure Linux 3 testing. #114152 is an example of networking related hang that we have seen earlier.

The Azure Linux 3 symcrypt problem does not appear to fixed. My guess is that the fix is not deployed to our CI machines. These CI legs run physical OS, they do not run containerized OS. #114276 (comment) does not imply that the fix is deployed to the affected CI machines.

@richlander

Copy link
Copy Markdown
MemberAuthor

Oh, you are right. I didn't think of the E2E workflow.

@ilyas1974 -- Can you check which symcrympt version is on the CI machines? The context link above should help.

@ilyas1974

Copy link
Copy Markdown

The image currently associated with those pools are from 4/17. Currently checking to see what version of symcrympt is installed on these systems.

@vcsjones

Copy link
Copy Markdown
Member

A discussion point in a different medium was raised that I wanted to make sure was better understood - do we have Linux testing that we feel is adequate that is not Azure Linux 3? Azure Linux 3's OpenSSL is different enough from vanilla OpenSSL that they are more or less two different things. We wanted to make sure we also have CI protections that are representative of what the Linux community uses, too.

@richlander

richlander commented May 6, 2025

Copy link
Copy Markdown
MemberAuthor

Good point. The original plan was to switch to all AZL3 VMs. That's now looking like an impractical plan, for two reasons:

  • It's quite different (what you said).
  • Concerns about ongoing quality/reliability/breakage (we need to be conservative).

I'm concerned that SymCrypt changes will continue to break us. We need a way to easily fallback to Ubuntu. That would be much easier if we had a guarded rollout scheme (via PR), where VMs were not updated in place.

Just so I/we understand ... Some of these crypto APIs must have a kernel implementation. It's the kernel that gets shared between host and guest and (AFAIK) nothing else. That's the architectural reason for this conversation, yes?

@vcsjones

vcsjones commented May 6, 2025

Copy link
Copy Markdown
Member

@ilyas1974 Specifically, the package under question is SymCrypt-OpenSSL.

The fix is in >= 1.8.0.

The image currently associated with those pools are from 4/17.

Based on the repo information, 1.8.0 was released on 4/29. I suspect the VMs are on 1.7.0-1.azl3.

@richlander

Copy link
Copy Markdown
MemberAuthor

The May Azure Linux 3.0 update has been released! (3.0.20250429)

Just got this in mail.

@jkotas

Copy link
Copy Markdown
Member

Some of these crypto APIs must have a kernel implementation. It's the kernel that gets shared between host and guest and (AFAIK) nothing else. That's the architectural reason for this conversation, yes?

Standard openssl configuration does not have any special kernel components. Some containerized distros run on Azure Linux kernel and we have not observed any issues with it so far: https://github.com/dotnet/runtime/blob/main/eng/pipelines/coreclr/templates/helix-queues-setup.yml#L79-L82

That would be much easier if we had a guarded rollout scheme (via PR), where VMs were not updated in place.

Right, this is ongoing pain from unguarded rollouts that we have been living with for years. I would not over index on the Azure Linux symcrypt problem. I can bet that the next 5 surprise CI breaks from unguarded image rollouts are going to somewhere else.

@richlander

richlander commented May 6, 2025

Copy link
Copy Markdown
MemberAuthor

I see now. I just re-looked at the changes. This is the scenario where we're testing with raw VMs. That resolves my confusion. A simple solution is that we don't do that with Azure Linux (and close this PR).

@jkotas

Copy link
Copy Markdown
Member

A simple solution is that we don't do that with Azure Linux

There are two aspects:

  • Whether to test Azure Linux in default CI: Our strategy has been to have a mix of OSes and architectures in the default CI so that we have high probability of finding most breakages quickly. We need to have Azure Linux coverage somewhere. Dropping Azure Linux testing in the default CI runs would not be an improvement. Azure Linux breakages come from both Azure Linux changes (less common) and our code changes (more common). If we do not have Azure Linux testing in default CI, more breakages will sneak through to outer loop.
  • Whether to test Azure Linux on raw VMs: We should have Azure Linux raw VMs coverage somewhere. We can choose to move it to outer loop (as long as we have testing for containerized Azure Linux in default CI).

@richlander

Copy link
Copy Markdown
MemberAuthor

Yes, I was thinking of having containerized Azure Linux in default CI, which you had suggested earlier. The idea of raw VM testing in outer loop hadn't occurred to me. That is likely a good idea. I will close this PR since it is no longer relevant.

I read an underlying statement that raw VM testing is an important modality.

@jkotas
jkotas deleted the revert-114268-azl branch May 23, 2025 22:04
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 23, 2025
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

@richlander@jkotas@ilyas1974@vcsjones
, '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

Revert "Switch libraries testing to Ubuntu 22 temporarily" - #115312

Closed
richlander wants to merge 1 commit into
mainfrom
revert-114268-azl
Closed

Revert "Switch libraries testing to Ubuntu 22 temporarily"#115312
richlander wants to merge 1 commit into
mainfrom
revert-114268-azl

Conversation

@richlander

Copy link
Copy Markdown
Member

CopilotAI review requested due to automatic review settings May 5, 2025 19:46
@ghostghost added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label May 5, 2025

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 reverts the earlier temporary change that switched libraries testing to Ubuntu 22, restoring the previous helix queue names.

  • Reverts the public helix queue from "Ubuntu.2204.Amd64.Open" to "azurelinux.3.amd64.open".
  • Reverts the internal helix queue from "Ubuntu.2204.Amd64" to "azurelinux.3.amd64".
Comments suppressed due to low confidence (2)

eng/pipelines/coreclr/templates/helix-queues-setup.yml:101

  • [nitpick] Ensure that changing the queue name for the public team project to "azurelinux.3.amd64.open" is consistent with naming conventions used across the pipeline configuration.
- - azurelinux.3.amd64.open

eng/pipelines/coreclr/templates/helix-queues-setup.yml:103

  • [nitpick] Verify that the internal team project queue name "azurelinux.3.amd64" aligns with the established naming patterns in the broader system.
- - azurelinux.3.amd64

@richlander

Copy link
Copy Markdown
MemberAuthor

It looks like the issues are related to timeouts / space limitations. I think we were seeing those before. Did anyone develop any insight on that? I'm not sure how that conversation ended. @mthalman@AndyAyersMS@jkotas@dougbu@agocke

Example:

 System.Net.Mail.Tests.SmtpClientTlsTest_Send.ClientCertificateRequired_Sent [FAIL]
Assert.Null() Failure: Value is not null
Expected: null
Actual: System.Net.Mail.SmtpException: The operation has timed out.
at System.Net.Mail.SmtpClient.Send(MailMessage message) in /_/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpClient.cs:line 521
at System.Net.Mail.Tests.LoopbackServerTestBase`1.SendMailInternal(MailMessage msg, CancellationToken cancellationToken, Nullable`1 asyncExpectDirectException) in /_/src/libraries/System.Net.Mail/tests/Functional/LoopbackServerTestBase.cs:line 74 Stack Trace: /_/src/libraries/System.Net.Mail/tests/Functional/LoopbackServerTestBase.cs(155,0): at System.Net.Mail.Tests.LoopbackServerTestBase`1.SendMail(MailMessage msg, CancellationToken cancellationToken) /_/src/libraries/System.Net.Mail/tests/Functional/SmtpClientTlsTest.cs(159,0): at System.Net.Mail.Tests.SmtpClientTlsTest`1.ClientCertificateRequired_Sent() --- End of stack trace from previous location --- Output: Server> 220 localhost Client> EHLO a000K7N Server> 250-localhost, mock server here> 250-STARTTLS Server> 250 AUTH PLAIN LOGIN Client> STARTTLS Server> 220 Ready to start TLS

https://helixr1107v0xdcypoyl9e7f.blob.core.windows.net/dotnet-runtime-refs-pull-115312-merge-c8aa9ab112ad47839a/System.Net.Mail.Functional.Tests/1/console.46ccc21a.log?helixlogtype=result

@jkotasjkotas added area-System.Net and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels May 6, 2025
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@jkotas

jkotas commented May 6, 2025

Copy link
Copy Markdown
Member

It looks like the issues are related to timeouts / space limitations

The failures are networking related hangs, very similar to the hangs that lead to disabling of Azure Linux 3 testing. #114152 is an example of networking related hang that we have seen earlier.

The Azure Linux 3 symcrypt problem does not appear to fixed. My guess is that the fix is not deployed to our CI machines. These CI legs run physical OS, they do not run containerized OS. #114276 (comment) does not imply that the fix is deployed to the affected CI machines.

@richlander

Copy link
Copy Markdown
MemberAuthor

Oh, you are right. I didn't think of the E2E workflow.

@ilyas1974 -- Can you check which symcrympt version is on the CI machines? The context link above should help.

@ilyas1974

Copy link
Copy Markdown

The image currently associated with those pools are from 4/17. Currently checking to see what version of symcrympt is installed on these systems.

@vcsjones

Copy link
Copy Markdown
Member

A discussion point in a different medium was raised that I wanted to make sure was better understood - do we have Linux testing that we feel is adequate that is not Azure Linux 3? Azure Linux 3's OpenSSL is different enough from vanilla OpenSSL that they are more or less two different things. We wanted to make sure we also have CI protections that are representative of what the Linux community uses, too.

@richlander

richlander commented May 6, 2025

Copy link
Copy Markdown
MemberAuthor

Good point. The original plan was to switch to all AZL3 VMs. That's now looking like an impractical plan, for two reasons:

  • It's quite different (what you said).
  • Concerns about ongoing quality/reliability/breakage (we need to be conservative).

I'm concerned that SymCrypt changes will continue to break us. We need a way to easily fallback to Ubuntu. That would be much easier if we had a guarded rollout scheme (via PR), where VMs were not updated in place.

Just so I/we understand ... Some of these crypto APIs must have a kernel implementation. It's the kernel that gets shared between host and guest and (AFAIK) nothing else. That's the architectural reason for this conversation, yes?

@vcsjones

vcsjones commented May 6, 2025

Copy link
Copy Markdown
Member

@ilyas1974 Specifically, the package under question is SymCrypt-OpenSSL.

The fix is in >= 1.8.0.

The image currently associated with those pools are from 4/17.

Based on the repo information, 1.8.0 was released on 4/29. I suspect the VMs are on 1.7.0-1.azl3.

@richlander

Copy link
Copy Markdown
MemberAuthor

The May Azure Linux 3.0 update has been released! (3.0.20250429)

Just got this in mail.

@jkotas

Copy link
Copy Markdown
Member

Some of these crypto APIs must have a kernel implementation. It's the kernel that gets shared between host and guest and (AFAIK) nothing else. That's the architectural reason for this conversation, yes?

Standard openssl configuration does not have any special kernel components. Some containerized distros run on Azure Linux kernel and we have not observed any issues with it so far: https://github.com/dotnet/runtime/blob/main/eng/pipelines/coreclr/templates/helix-queues-setup.yml#L79-L82

That would be much easier if we had a guarded rollout scheme (via PR), where VMs were not updated in place.

Right, this is ongoing pain from unguarded rollouts that we have been living with for years. I would not over index on the Azure Linux symcrypt problem. I can bet that the next 5 surprise CI breaks from unguarded image rollouts are going to somewhere else.

@richlander

richlander commented May 6, 2025

Copy link
Copy Markdown
MemberAuthor

I see now. I just re-looked at the changes. This is the scenario where we're testing with raw VMs. That resolves my confusion. A simple solution is that we don't do that with Azure Linux (and close this PR).

@jkotas

Copy link
Copy Markdown
Member

A simple solution is that we don't do that with Azure Linux

There are two aspects:

  • Whether to test Azure Linux in default CI: Our strategy has been to have a mix of OSes and architectures in the default CI so that we have high probability of finding most breakages quickly. We need to have Azure Linux coverage somewhere. Dropping Azure Linux testing in the default CI runs would not be an improvement. Azure Linux breakages come from both Azure Linux changes (less common) and our code changes (more common). If we do not have Azure Linux testing in default CI, more breakages will sneak through to outer loop.
  • Whether to test Azure Linux on raw VMs: We should have Azure Linux raw VMs coverage somewhere. We can choose to move it to outer loop (as long as we have testing for containerized Azure Linux in default CI).

@richlander

Copy link
Copy Markdown
MemberAuthor

Yes, I was thinking of having containerized Azure Linux in default CI, which you had suggested earlier. The idea of raw VM testing in outer loop hadn't occurred to me. That is likely a good idea. I will close this PR since it is no longer relevant.

I read an underlying statement that raw VM testing is an important modality.

@jkotas
jkotas deleted the revert-114268-azl branch May 23, 2025 22:04
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 23, 2025
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

@richlander@jkotas@ilyas1974@vcsjones
, '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

Revert "Switch libraries testing to Ubuntu 22 temporarily" - #115312

Closed
richlander wants to merge 1 commit into
mainfrom
revert-114268-azl
Closed

Revert "Switch libraries testing to Ubuntu 22 temporarily"#115312
richlander wants to merge 1 commit into
mainfrom
revert-114268-azl

Conversation

@richlander

Copy link
Copy Markdown
Member

CopilotAI review requested due to automatic review settings May 5, 2025 19:46
@ghostghost added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label May 5, 2025

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 reverts the earlier temporary change that switched libraries testing to Ubuntu 22, restoring the previous helix queue names.

  • Reverts the public helix queue from "Ubuntu.2204.Amd64.Open" to "azurelinux.3.amd64.open".
  • Reverts the internal helix queue from "Ubuntu.2204.Amd64" to "azurelinux.3.amd64".
Comments suppressed due to low confidence (2)

eng/pipelines/coreclr/templates/helix-queues-setup.yml:101

  • [nitpick] Ensure that changing the queue name for the public team project to "azurelinux.3.amd64.open" is consistent with naming conventions used across the pipeline configuration.
- - azurelinux.3.amd64.open

eng/pipelines/coreclr/templates/helix-queues-setup.yml:103

  • [nitpick] Verify that the internal team project queue name "azurelinux.3.amd64" aligns with the established naming patterns in the broader system.
- - azurelinux.3.amd64

@richlander

Copy link
Copy Markdown
MemberAuthor

It looks like the issues are related to timeouts / space limitations. I think we were seeing those before. Did anyone develop any insight on that? I'm not sure how that conversation ended. @mthalman@AndyAyersMS@jkotas@dougbu@agocke

Example:

 System.Net.Mail.Tests.SmtpClientTlsTest_Send.ClientCertificateRequired_Sent [FAIL]
Assert.Null() Failure: Value is not null
Expected: null
Actual: System.Net.Mail.SmtpException: The operation has timed out.
at System.Net.Mail.SmtpClient.Send(MailMessage message) in /_/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpClient.cs:line 521
at System.Net.Mail.Tests.LoopbackServerTestBase`1.SendMailInternal(MailMessage msg, CancellationToken cancellationToken, Nullable`1 asyncExpectDirectException) in /_/src/libraries/System.Net.Mail/tests/Functional/LoopbackServerTestBase.cs:line 74 Stack Trace: /_/src/libraries/System.Net.Mail/tests/Functional/LoopbackServerTestBase.cs(155,0): at System.Net.Mail.Tests.LoopbackServerTestBase`1.SendMail(MailMessage msg, CancellationToken cancellationToken) /_/src/libraries/System.Net.Mail/tests/Functional/SmtpClientTlsTest.cs(159,0): at System.Net.Mail.Tests.SmtpClientTlsTest`1.ClientCertificateRequired_Sent() --- End of stack trace from previous location --- Output: Server> 220 localhost Client> EHLO a000K7N Server> 250-localhost, mock server here> 250-STARTTLS Server> 250 AUTH PLAIN LOGIN Client> STARTTLS Server> 220 Ready to start TLS

https://helixr1107v0xdcypoyl9e7f.blob.core.windows.net/dotnet-runtime-refs-pull-115312-merge-c8aa9ab112ad47839a/System.Net.Mail.Functional.Tests/1/console.46ccc21a.log?helixlogtype=result

@jkotasjkotas added area-System.Net and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels May 6, 2025
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@jkotas

jkotas commented May 6, 2025

Copy link
Copy Markdown
Member

It looks like the issues are related to timeouts / space limitations

The failures are networking related hangs, very similar to the hangs that lead to disabling of Azure Linux 3 testing. #114152 is an example of networking related hang that we have seen earlier.

The Azure Linux 3 symcrypt problem does not appear to fixed. My guess is that the fix is not deployed to our CI machines. These CI legs run physical OS, they do not run containerized OS. #114276 (comment) does not imply that the fix is deployed to the affected CI machines.

@richlander

Copy link
Copy Markdown
MemberAuthor

Oh, you are right. I didn't think of the E2E workflow.

@ilyas1974 -- Can you check which symcrympt version is on the CI machines? The context link above should help.

@ilyas1974

Copy link
Copy Markdown

The image currently associated with those pools are from 4/17. Currently checking to see what version of symcrympt is installed on these systems.

@vcsjones

Copy link
Copy Markdown
Member

A discussion point in a different medium was raised that I wanted to make sure was better understood - do we have Linux testing that we feel is adequate that is not Azure Linux 3? Azure Linux 3's OpenSSL is different enough from vanilla OpenSSL that they are more or less two different things. We wanted to make sure we also have CI protections that are representative of what the Linux community uses, too.

@richlander

richlander commented May 6, 2025

Copy link
Copy Markdown
MemberAuthor

Good point. The original plan was to switch to all AZL3 VMs. That's now looking like an impractical plan, for two reasons:

  • It's quite different (what you said).
  • Concerns about ongoing quality/reliability/breakage (we need to be conservative).

I'm concerned that SymCrypt changes will continue to break us. We need a way to easily fallback to Ubuntu. That would be much easier if we had a guarded rollout scheme (via PR), where VMs were not updated in place.

Just so I/we understand ... Some of these crypto APIs must have a kernel implementation. It's the kernel that gets shared between host and guest and (AFAIK) nothing else. That's the architectural reason for this conversation, yes?

@vcsjones

vcsjones commented May 6, 2025

Copy link
Copy Markdown
Member

@ilyas1974 Specifically, the package under question is SymCrypt-OpenSSL.

The fix is in >= 1.8.0.

The image currently associated with those pools are from 4/17.

Based on the repo information, 1.8.0 was released on 4/29. I suspect the VMs are on 1.7.0-1.azl3.

@richlander

Copy link
Copy Markdown
MemberAuthor

The May Azure Linux 3.0 update has been released! (3.0.20250429)

Just got this in mail.

@jkotas

Copy link
Copy Markdown
Member

Some of these crypto APIs must have a kernel implementation. It's the kernel that gets shared between host and guest and (AFAIK) nothing else. That's the architectural reason for this conversation, yes?

Standard openssl configuration does not have any special kernel components. Some containerized distros run on Azure Linux kernel and we have not observed any issues with it so far: https://github.com/dotnet/runtime/blob/main/eng/pipelines/coreclr/templates/helix-queues-setup.yml#L79-L82

That would be much easier if we had a guarded rollout scheme (via PR), where VMs were not updated in place.

Right, this is ongoing pain from unguarded rollouts that we have been living with for years. I would not over index on the Azure Linux symcrypt problem. I can bet that the next 5 surprise CI breaks from unguarded image rollouts are going to somewhere else.

@richlander

richlander commented May 6, 2025

Copy link
Copy Markdown
MemberAuthor

I see now. I just re-looked at the changes. This is the scenario where we're testing with raw VMs. That resolves my confusion. A simple solution is that we don't do that with Azure Linux (and close this PR).

@jkotas

Copy link
Copy Markdown
Member

A simple solution is that we don't do that with Azure Linux

There are two aspects:

  • Whether to test Azure Linux in default CI: Our strategy has been to have a mix of OSes and architectures in the default CI so that we have high probability of finding most breakages quickly. We need to have Azure Linux coverage somewhere. Dropping Azure Linux testing in the default CI runs would not be an improvement. Azure Linux breakages come from both Azure Linux changes (less common) and our code changes (more common). If we do not have Azure Linux testing in default CI, more breakages will sneak through to outer loop.
  • Whether to test Azure Linux on raw VMs: We should have Azure Linux raw VMs coverage somewhere. We can choose to move it to outer loop (as long as we have testing for containerized Azure Linux in default CI).

@richlander

Copy link
Copy Markdown
MemberAuthor

Yes, I was thinking of having containerized Azure Linux in default CI, which you had suggested earlier. The idea of raw VM testing in outer loop hadn't occurred to me. That is likely a good idea. I will close this PR since it is no longer relevant.

I read an underlying statement that raw VM testing is an important modality.

@jkotas
jkotas deleted the revert-114268-azl branch May 23, 2025 22:04
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 23, 2025
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

@richlander@jkotas@ilyas1974@vcsjones
, '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

Revert "Switch libraries testing to Ubuntu 22 temporarily" - #115312

Closed
richlander wants to merge 1 commit into
mainfrom
revert-114268-azl
Closed

Revert "Switch libraries testing to Ubuntu 22 temporarily"#115312
richlander wants to merge 1 commit into
mainfrom
revert-114268-azl

Conversation

@richlander

Copy link
Copy Markdown
Member

CopilotAI review requested due to automatic review settings May 5, 2025 19:46
@ghostghost added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label May 5, 2025

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 reverts the earlier temporary change that switched libraries testing to Ubuntu 22, restoring the previous helix queue names.

  • Reverts the public helix queue from "Ubuntu.2204.Amd64.Open" to "azurelinux.3.amd64.open".
  • Reverts the internal helix queue from "Ubuntu.2204.Amd64" to "azurelinux.3.amd64".
Comments suppressed due to low confidence (2)

eng/pipelines/coreclr/templates/helix-queues-setup.yml:101

  • [nitpick] Ensure that changing the queue name for the public team project to "azurelinux.3.amd64.open" is consistent with naming conventions used across the pipeline configuration.
- - azurelinux.3.amd64.open

eng/pipelines/coreclr/templates/helix-queues-setup.yml:103

  • [nitpick] Verify that the internal team project queue name "azurelinux.3.amd64" aligns with the established naming patterns in the broader system.
- - azurelinux.3.amd64

@richlander

Copy link
Copy Markdown
MemberAuthor

It looks like the issues are related to timeouts / space limitations. I think we were seeing those before. Did anyone develop any insight on that? I'm not sure how that conversation ended. @mthalman@AndyAyersMS@jkotas@dougbu@agocke

Example:

 System.Net.Mail.Tests.SmtpClientTlsTest_Send.ClientCertificateRequired_Sent [FAIL]
Assert.Null() Failure: Value is not null
Expected: null
Actual: System.Net.Mail.SmtpException: The operation has timed out.
at System.Net.Mail.SmtpClient.Send(MailMessage message) in /_/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpClient.cs:line 521
at System.Net.Mail.Tests.LoopbackServerTestBase`1.SendMailInternal(MailMessage msg, CancellationToken cancellationToken, Nullable`1 asyncExpectDirectException) in /_/src/libraries/System.Net.Mail/tests/Functional/LoopbackServerTestBase.cs:line 74 Stack Trace: /_/src/libraries/System.Net.Mail/tests/Functional/LoopbackServerTestBase.cs(155,0): at System.Net.Mail.Tests.LoopbackServerTestBase`1.SendMail(MailMessage msg, CancellationToken cancellationToken) /_/src/libraries/System.Net.Mail/tests/Functional/SmtpClientTlsTest.cs(159,0): at System.Net.Mail.Tests.SmtpClientTlsTest`1.ClientCertificateRequired_Sent() --- End of stack trace from previous location --- Output: Server> 220 localhost Client> EHLO a000K7N Server> 250-localhost, mock server here> 250-STARTTLS Server> 250 AUTH PLAIN LOGIN Client> STARTTLS Server> 220 Ready to start TLS

https://helixr1107v0xdcypoyl9e7f.blob.core.windows.net/dotnet-runtime-refs-pull-115312-merge-c8aa9ab112ad47839a/System.Net.Mail.Functional.Tests/1/console.46ccc21a.log?helixlogtype=result

@jkotasjkotas added area-System.Net and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels May 6, 2025
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@jkotas

jkotas commented May 6, 2025

Copy link
Copy Markdown
Member

It looks like the issues are related to timeouts / space limitations

The failures are networking related hangs, very similar to the hangs that lead to disabling of Azure Linux 3 testing. #114152 is an example of networking related hang that we have seen earlier.

The Azure Linux 3 symcrypt problem does not appear to fixed. My guess is that the fix is not deployed to our CI machines. These CI legs run physical OS, they do not run containerized OS. #114276 (comment) does not imply that the fix is deployed to the affected CI machines.

@richlander

Copy link
Copy Markdown
MemberAuthor

Oh, you are right. I didn't think of the E2E workflow.

@ilyas1974 -- Can you check which symcrympt version is on the CI machines? The context link above should help.

@ilyas1974

Copy link
Copy Markdown

The image currently associated with those pools are from 4/17. Currently checking to see what version of symcrympt is installed on these systems.

@vcsjones

Copy link
Copy Markdown
Member

A discussion point in a different medium was raised that I wanted to make sure was better understood - do we have Linux testing that we feel is adequate that is not Azure Linux 3? Azure Linux 3's OpenSSL is different enough from vanilla OpenSSL that they are more or less two different things. We wanted to make sure we also have CI protections that are representative of what the Linux community uses, too.

@richlander

richlander commented May 6, 2025

Copy link
Copy Markdown
MemberAuthor

Good point. The original plan was to switch to all AZL3 VMs. That's now looking like an impractical plan, for two reasons:

  • It's quite different (what you said).
  • Concerns about ongoing quality/reliability/breakage (we need to be conservative).

I'm concerned that SymCrypt changes will continue to break us. We need a way to easily fallback to Ubuntu. That would be much easier if we had a guarded rollout scheme (via PR), where VMs were not updated in place.

Just so I/we understand ... Some of these crypto APIs must have a kernel implementation. It's the kernel that gets shared between host and guest and (AFAIK) nothing else. That's the architectural reason for this conversation, yes?

@vcsjones

vcsjones commented May 6, 2025

Copy link
Copy Markdown
Member

@ilyas1974 Specifically, the package under question is SymCrypt-OpenSSL.

The fix is in >= 1.8.0.

The image currently associated with those pools are from 4/17.

Based on the repo information, 1.8.0 was released on 4/29. I suspect the VMs are on 1.7.0-1.azl3.

@richlander

Copy link
Copy Markdown
MemberAuthor

The May Azure Linux 3.0 update has been released! (3.0.20250429)

Just got this in mail.

@jkotas

Copy link
Copy Markdown
Member

Some of these crypto APIs must have a kernel implementation. It's the kernel that gets shared between host and guest and (AFAIK) nothing else. That's the architectural reason for this conversation, yes?

Standard openssl configuration does not have any special kernel components. Some containerized distros run on Azure Linux kernel and we have not observed any issues with it so far: https://github.com/dotnet/runtime/blob/main/eng/pipelines/coreclr/templates/helix-queues-setup.yml#L79-L82

That would be much easier if we had a guarded rollout scheme (via PR), where VMs were not updated in place.

Right, this is ongoing pain from unguarded rollouts that we have been living with for years. I would not over index on the Azure Linux symcrypt problem. I can bet that the next 5 surprise CI breaks from unguarded image rollouts are going to somewhere else.

@richlander

richlander commented May 6, 2025

Copy link
Copy Markdown
MemberAuthor

I see now. I just re-looked at the changes. This is the scenario where we're testing with raw VMs. That resolves my confusion. A simple solution is that we don't do that with Azure Linux (and close this PR).

@jkotas

Copy link
Copy Markdown
Member

A simple solution is that we don't do that with Azure Linux

There are two aspects:

  • Whether to test Azure Linux in default CI: Our strategy has been to have a mix of OSes and architectures in the default CI so that we have high probability of finding most breakages quickly. We need to have Azure Linux coverage somewhere. Dropping Azure Linux testing in the default CI runs would not be an improvement. Azure Linux breakages come from both Azure Linux changes (less common) and our code changes (more common). If we do not have Azure Linux testing in default CI, more breakages will sneak through to outer loop.
  • Whether to test Azure Linux on raw VMs: We should have Azure Linux raw VMs coverage somewhere. We can choose to move it to outer loop (as long as we have testing for containerized Azure Linux in default CI).

@richlander

Copy link
Copy Markdown
MemberAuthor

Yes, I was thinking of having containerized Azure Linux in default CI, which you had suggested earlier. The idea of raw VM testing in outer loop hadn't occurred to me. That is likely a good idea. I will close this PR since it is no longer relevant.

I read an underlying statement that raw VM testing is an important modality.

@jkotas
jkotas deleted the revert-114268-azl branch May 23, 2025 22:04
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 23, 2025
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

@richlander@jkotas@ilyas1974@vcsjones
, '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

Revert "Switch libraries testing to Ubuntu 22 temporarily" - #115312

Closed
richlander wants to merge 1 commit into
mainfrom
revert-114268-azl
Closed

Revert "Switch libraries testing to Ubuntu 22 temporarily"#115312
richlander wants to merge 1 commit into
mainfrom
revert-114268-azl

Conversation

@richlander

Copy link
Copy Markdown
Member

CopilotAI review requested due to automatic review settings May 5, 2025 19:46
@ghostghost added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label May 5, 2025

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 reverts the earlier temporary change that switched libraries testing to Ubuntu 22, restoring the previous helix queue names.

  • Reverts the public helix queue from "Ubuntu.2204.Amd64.Open" to "azurelinux.3.amd64.open".
  • Reverts the internal helix queue from "Ubuntu.2204.Amd64" to "azurelinux.3.amd64".
Comments suppressed due to low confidence (2)

eng/pipelines/coreclr/templates/helix-queues-setup.yml:101

  • [nitpick] Ensure that changing the queue name for the public team project to "azurelinux.3.amd64.open" is consistent with naming conventions used across the pipeline configuration.
- - azurelinux.3.amd64.open

eng/pipelines/coreclr/templates/helix-queues-setup.yml:103

  • [nitpick] Verify that the internal team project queue name "azurelinux.3.amd64" aligns with the established naming patterns in the broader system.
- - azurelinux.3.amd64

@richlander

Copy link
Copy Markdown
MemberAuthor

It looks like the issues are related to timeouts / space limitations. I think we were seeing those before. Did anyone develop any insight on that? I'm not sure how that conversation ended. @mthalman@AndyAyersMS@jkotas@dougbu@agocke

Example:

 System.Net.Mail.Tests.SmtpClientTlsTest_Send.ClientCertificateRequired_Sent [FAIL]
Assert.Null() Failure: Value is not null
Expected: null
Actual: System.Net.Mail.SmtpException: The operation has timed out.
at System.Net.Mail.SmtpClient.Send(MailMessage message) in /_/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpClient.cs:line 521
at System.Net.Mail.Tests.LoopbackServerTestBase`1.SendMailInternal(MailMessage msg, CancellationToken cancellationToken, Nullable`1 asyncExpectDirectException) in /_/src/libraries/System.Net.Mail/tests/Functional/LoopbackServerTestBase.cs:line 74 Stack Trace: /_/src/libraries/System.Net.Mail/tests/Functional/LoopbackServerTestBase.cs(155,0): at System.Net.Mail.Tests.LoopbackServerTestBase`1.SendMail(MailMessage msg, CancellationToken cancellationToken) /_/src/libraries/System.Net.Mail/tests/Functional/SmtpClientTlsTest.cs(159,0): at System.Net.Mail.Tests.SmtpClientTlsTest`1.ClientCertificateRequired_Sent() --- End of stack trace from previous location --- Output: Server> 220 localhost Client> EHLO a000K7N Server> 250-localhost, mock server here> 250-STARTTLS Server> 250 AUTH PLAIN LOGIN Client> STARTTLS Server> 220 Ready to start TLS

https://helixr1107v0xdcypoyl9e7f.blob.core.windows.net/dotnet-runtime-refs-pull-115312-merge-c8aa9ab112ad47839a/System.Net.Mail.Functional.Tests/1/console.46ccc21a.log?helixlogtype=result

@jkotasjkotas added area-System.Net and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels May 6, 2025
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@jkotas

jkotas commented May 6, 2025

Copy link
Copy Markdown
Member

It looks like the issues are related to timeouts / space limitations

The failures are networking related hangs, very similar to the hangs that lead to disabling of Azure Linux 3 testing. #114152 is an example of networking related hang that we have seen earlier.

The Azure Linux 3 symcrypt problem does not appear to fixed. My guess is that the fix is not deployed to our CI machines. These CI legs run physical OS, they do not run containerized OS. #114276 (comment) does not imply that the fix is deployed to the affected CI machines.

@richlander

Copy link
Copy Markdown
MemberAuthor

Oh, you are right. I didn't think of the E2E workflow.

@ilyas1974 -- Can you check which symcrympt version is on the CI machines? The context link above should help.

@ilyas1974

Copy link
Copy Markdown

The image currently associated with those pools are from 4/17. Currently checking to see what version of symcrympt is installed on these systems.

@vcsjones

Copy link
Copy Markdown
Member

A discussion point in a different medium was raised that I wanted to make sure was better understood - do we have Linux testing that we feel is adequate that is not Azure Linux 3? Azure Linux 3's OpenSSL is different enough from vanilla OpenSSL that they are more or less two different things. We wanted to make sure we also have CI protections that are representative of what the Linux community uses, too.

@richlander

richlander commented May 6, 2025

Copy link
Copy Markdown
MemberAuthor

Good point. The original plan was to switch to all AZL3 VMs. That's now looking like an impractical plan, for two reasons:

  • It's quite different (what you said).
  • Concerns about ongoing quality/reliability/breakage (we need to be conservative).

I'm concerned that SymCrypt changes will continue to break us. We need a way to easily fallback to Ubuntu. That would be much easier if we had a guarded rollout scheme (via PR), where VMs were not updated in place.

Just so I/we understand ... Some of these crypto APIs must have a kernel implementation. It's the kernel that gets shared between host and guest and (AFAIK) nothing else. That's the architectural reason for this conversation, yes?

@vcsjones

vcsjones commented May 6, 2025

Copy link
Copy Markdown
Member

@ilyas1974 Specifically, the package under question is SymCrypt-OpenSSL.

The fix is in >= 1.8.0.

The image currently associated with those pools are from 4/17.

Based on the repo information, 1.8.0 was released on 4/29. I suspect the VMs are on 1.7.0-1.azl3.

@richlander

Copy link
Copy Markdown
MemberAuthor

The May Azure Linux 3.0 update has been released! (3.0.20250429)

Just got this in mail.

@jkotas

Copy link
Copy Markdown
Member

Some of these crypto APIs must have a kernel implementation. It's the kernel that gets shared between host and guest and (AFAIK) nothing else. That's the architectural reason for this conversation, yes?

Standard openssl configuration does not have any special kernel components. Some containerized distros run on Azure Linux kernel and we have not observed any issues with it so far: https://github.com/dotnet/runtime/blob/main/eng/pipelines/coreclr/templates/helix-queues-setup.yml#L79-L82

That would be much easier if we had a guarded rollout scheme (via PR), where VMs were not updated in place.

Right, this is ongoing pain from unguarded rollouts that we have been living with for years. I would not over index on the Azure Linux symcrypt problem. I can bet that the next 5 surprise CI breaks from unguarded image rollouts are going to somewhere else.

@richlander

richlander commented May 6, 2025

Copy link
Copy Markdown
MemberAuthor

I see now. I just re-looked at the changes. This is the scenario where we're testing with raw VMs. That resolves my confusion. A simple solution is that we don't do that with Azure Linux (and close this PR).

@jkotas

Copy link
Copy Markdown
Member

A simple solution is that we don't do that with Azure Linux

There are two aspects:

  • Whether to test Azure Linux in default CI: Our strategy has been to have a mix of OSes and architectures in the default CI so that we have high probability of finding most breakages quickly. We need to have Azure Linux coverage somewhere. Dropping Azure Linux testing in the default CI runs would not be an improvement. Azure Linux breakages come from both Azure Linux changes (less common) and our code changes (more common). If we do not have Azure Linux testing in default CI, more breakages will sneak through to outer loop.
  • Whether to test Azure Linux on raw VMs: We should have Azure Linux raw VMs coverage somewhere. We can choose to move it to outer loop (as long as we have testing for containerized Azure Linux in default CI).

@richlander

Copy link
Copy Markdown
MemberAuthor

Yes, I was thinking of having containerized Azure Linux in default CI, which you had suggested earlier. The idea of raw VM testing in outer loop hadn't occurred to me. That is likely a good idea. I will close this PR since it is no longer relevant.

I read an underlying statement that raw VM testing is an important modality.

@jkotas
jkotas deleted the revert-114268-azl branch May 23, 2025 22:04
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 23, 2025
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

@richlander@jkotas@ilyas1974@vcsjones
, '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

Revert "Switch libraries testing to Ubuntu 22 temporarily" - #115312

Closed
richlander wants to merge 1 commit into
mainfrom
revert-114268-azl
Closed

Revert "Switch libraries testing to Ubuntu 22 temporarily"#115312
richlander wants to merge 1 commit into
mainfrom
revert-114268-azl

Conversation

@richlander

Copy link
Copy Markdown
Member

CopilotAI review requested due to automatic review settings May 5, 2025 19:46
@ghostghost added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label May 5, 2025

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 reverts the earlier temporary change that switched libraries testing to Ubuntu 22, restoring the previous helix queue names.

  • Reverts the public helix queue from "Ubuntu.2204.Amd64.Open" to "azurelinux.3.amd64.open".
  • Reverts the internal helix queue from "Ubuntu.2204.Amd64" to "azurelinux.3.amd64".
Comments suppressed due to low confidence (2)

eng/pipelines/coreclr/templates/helix-queues-setup.yml:101

  • [nitpick] Ensure that changing the queue name for the public team project to "azurelinux.3.amd64.open" is consistent with naming conventions used across the pipeline configuration.
- - azurelinux.3.amd64.open

eng/pipelines/coreclr/templates/helix-queues-setup.yml:103

  • [nitpick] Verify that the internal team project queue name "azurelinux.3.amd64" aligns with the established naming patterns in the broader system.
- - azurelinux.3.amd64

@richlander

Copy link
Copy Markdown
MemberAuthor

It looks like the issues are related to timeouts / space limitations. I think we were seeing those before. Did anyone develop any insight on that? I'm not sure how that conversation ended. @mthalman@AndyAyersMS@jkotas@dougbu@agocke

Example:

 System.Net.Mail.Tests.SmtpClientTlsTest_Send.ClientCertificateRequired_Sent [FAIL]
Assert.Null() Failure: Value is not null
Expected: null
Actual: System.Net.Mail.SmtpException: The operation has timed out.
at System.Net.Mail.SmtpClient.Send(MailMessage message) in /_/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpClient.cs:line 521
at System.Net.Mail.Tests.LoopbackServerTestBase`1.SendMailInternal(MailMessage msg, CancellationToken cancellationToken, Nullable`1 asyncExpectDirectException) in /_/src/libraries/System.Net.Mail/tests/Functional/LoopbackServerTestBase.cs:line 74 Stack Trace: /_/src/libraries/System.Net.Mail/tests/Functional/LoopbackServerTestBase.cs(155,0): at System.Net.Mail.Tests.LoopbackServerTestBase`1.SendMail(MailMessage msg, CancellationToken cancellationToken) /_/src/libraries/System.Net.Mail/tests/Functional/SmtpClientTlsTest.cs(159,0): at System.Net.Mail.Tests.SmtpClientTlsTest`1.ClientCertificateRequired_Sent() --- End of stack trace from previous location --- Output: Server> 220 localhost Client> EHLO a000K7N Server> 250-localhost, mock server here> 250-STARTTLS Server> 250 AUTH PLAIN LOGIN Client> STARTTLS Server> 220 Ready to start TLS

https://helixr1107v0xdcypoyl9e7f.blob.core.windows.net/dotnet-runtime-refs-pull-115312-merge-c8aa9ab112ad47839a/System.Net.Mail.Functional.Tests/1/console.46ccc21a.log?helixlogtype=result

@jkotasjkotas added area-System.Net and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels May 6, 2025
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@jkotas

jkotas commented May 6, 2025

Copy link
Copy Markdown
Member

It looks like the issues are related to timeouts / space limitations

The failures are networking related hangs, very similar to the hangs that lead to disabling of Azure Linux 3 testing. #114152 is an example of networking related hang that we have seen earlier.

The Azure Linux 3 symcrypt problem does not appear to fixed. My guess is that the fix is not deployed to our CI machines. These CI legs run physical OS, they do not run containerized OS. #114276 (comment) does not imply that the fix is deployed to the affected CI machines.

@richlander

Copy link
Copy Markdown
MemberAuthor

Oh, you are right. I didn't think of the E2E workflow.

@ilyas1974 -- Can you check which symcrympt version is on the CI machines? The context link above should help.

@ilyas1974

Copy link
Copy Markdown

The image currently associated with those pools are from 4/17. Currently checking to see what version of symcrympt is installed on these systems.

@vcsjones

Copy link
Copy Markdown
Member

A discussion point in a different medium was raised that I wanted to make sure was better understood - do we have Linux testing that we feel is adequate that is not Azure Linux 3? Azure Linux 3's OpenSSL is different enough from vanilla OpenSSL that they are more or less two different things. We wanted to make sure we also have CI protections that are representative of what the Linux community uses, too.

@richlander

richlander commented May 6, 2025

Copy link
Copy Markdown
MemberAuthor

Good point. The original plan was to switch to all AZL3 VMs. That's now looking like an impractical plan, for two reasons:

  • It's quite different (what you said).
  • Concerns about ongoing quality/reliability/breakage (we need to be conservative).

I'm concerned that SymCrypt changes will continue to break us. We need a way to easily fallback to Ubuntu. That would be much easier if we had a guarded rollout scheme (via PR), where VMs were not updated in place.

Just so I/we understand ... Some of these crypto APIs must have a kernel implementation. It's the kernel that gets shared between host and guest and (AFAIK) nothing else. That's the architectural reason for this conversation, yes?

@vcsjones

vcsjones commented May 6, 2025

Copy link
Copy Markdown
Member

@ilyas1974 Specifically, the package under question is SymCrypt-OpenSSL.

The fix is in >= 1.8.0.

The image currently associated with those pools are from 4/17.

Based on the repo information, 1.8.0 was released on 4/29. I suspect the VMs are on 1.7.0-1.azl3.

@richlander

Copy link
Copy Markdown
MemberAuthor

The May Azure Linux 3.0 update has been released! (3.0.20250429)

Just got this in mail.

@jkotas

Copy link
Copy Markdown
Member

Some of these crypto APIs must have a kernel implementation. It's the kernel that gets shared between host and guest and (AFAIK) nothing else. That's the architectural reason for this conversation, yes?

Standard openssl configuration does not have any special kernel components. Some containerized distros run on Azure Linux kernel and we have not observed any issues with it so far: https://github.com/dotnet/runtime/blob/main/eng/pipelines/coreclr/templates/helix-queues-setup.yml#L79-L82

That would be much easier if we had a guarded rollout scheme (via PR), where VMs were not updated in place.

Right, this is ongoing pain from unguarded rollouts that we have been living with for years. I would not over index on the Azure Linux symcrypt problem. I can bet that the next 5 surprise CI breaks from unguarded image rollouts are going to somewhere else.

@richlander

richlander commented May 6, 2025

Copy link
Copy Markdown
MemberAuthor

I see now. I just re-looked at the changes. This is the scenario where we're testing with raw VMs. That resolves my confusion. A simple solution is that we don't do that with Azure Linux (and close this PR).

@jkotas

Copy link
Copy Markdown
Member

A simple solution is that we don't do that with Azure Linux

There are two aspects:

  • Whether to test Azure Linux in default CI: Our strategy has been to have a mix of OSes and architectures in the default CI so that we have high probability of finding most breakages quickly. We need to have Azure Linux coverage somewhere. Dropping Azure Linux testing in the default CI runs would not be an improvement. Azure Linux breakages come from both Azure Linux changes (less common) and our code changes (more common). If we do not have Azure Linux testing in default CI, more breakages will sneak through to outer loop.
  • Whether to test Azure Linux on raw VMs: We should have Azure Linux raw VMs coverage somewhere. We can choose to move it to outer loop (as long as we have testing for containerized Azure Linux in default CI).

@richlander

Copy link
Copy Markdown
MemberAuthor

Yes, I was thinking of having containerized Azure Linux in default CI, which you had suggested earlier. The idea of raw VM testing in outer loop hadn't occurred to me. That is likely a good idea. I will close this PR since it is no longer relevant.

I read an underlying statement that raw VM testing is an important modality.

@jkotas
jkotas deleted the revert-114268-azl branch May 23, 2025 22:04
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 23, 2025
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

@richlander@jkotas@ilyas1974@vcsjones
, '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

Revert "Switch libraries testing to Ubuntu 22 temporarily" - #115312

Closed
richlander wants to merge 1 commit into
mainfrom
revert-114268-azl
Closed

Revert "Switch libraries testing to Ubuntu 22 temporarily"#115312
richlander wants to merge 1 commit into
mainfrom
revert-114268-azl

Conversation

@richlander

Copy link
Copy Markdown
Member

CopilotAI review requested due to automatic review settings May 5, 2025 19:46
@ghostghost added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label May 5, 2025

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 reverts the earlier temporary change that switched libraries testing to Ubuntu 22, restoring the previous helix queue names.

  • Reverts the public helix queue from "Ubuntu.2204.Amd64.Open" to "azurelinux.3.amd64.open".
  • Reverts the internal helix queue from "Ubuntu.2204.Amd64" to "azurelinux.3.amd64".
Comments suppressed due to low confidence (2)

eng/pipelines/coreclr/templates/helix-queues-setup.yml:101

  • [nitpick] Ensure that changing the queue name for the public team project to "azurelinux.3.amd64.open" is consistent with naming conventions used across the pipeline configuration.
- - azurelinux.3.amd64.open

eng/pipelines/coreclr/templates/helix-queues-setup.yml:103

  • [nitpick] Verify that the internal team project queue name "azurelinux.3.amd64" aligns with the established naming patterns in the broader system.
- - azurelinux.3.amd64

@richlander

Copy link
Copy Markdown
MemberAuthor

It looks like the issues are related to timeouts / space limitations. I think we were seeing those before. Did anyone develop any insight on that? I'm not sure how that conversation ended. @mthalman@AndyAyersMS@jkotas@dougbu@agocke

Example:

 System.Net.Mail.Tests.SmtpClientTlsTest_Send.ClientCertificateRequired_Sent [FAIL]
Assert.Null() Failure: Value is not null
Expected: null
Actual: System.Net.Mail.SmtpException: The operation has timed out.
at System.Net.Mail.SmtpClient.Send(MailMessage message) in /_/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpClient.cs:line 521
at System.Net.Mail.Tests.LoopbackServerTestBase`1.SendMailInternal(MailMessage msg, CancellationToken cancellationToken, Nullable`1 asyncExpectDirectException) in /_/src/libraries/System.Net.Mail/tests/Functional/LoopbackServerTestBase.cs:line 74 Stack Trace: /_/src/libraries/System.Net.Mail/tests/Functional/LoopbackServerTestBase.cs(155,0): at System.Net.Mail.Tests.LoopbackServerTestBase`1.SendMail(MailMessage msg, CancellationToken cancellationToken) /_/src/libraries/System.Net.Mail/tests/Functional/SmtpClientTlsTest.cs(159,0): at System.Net.Mail.Tests.SmtpClientTlsTest`1.ClientCertificateRequired_Sent() --- End of stack trace from previous location --- Output: Server> 220 localhost Client> EHLO a000K7N Server> 250-localhost, mock server here> 250-STARTTLS Server> 250 AUTH PLAIN LOGIN Client> STARTTLS Server> 220 Ready to start TLS

https://helixr1107v0xdcypoyl9e7f.blob.core.windows.net/dotnet-runtime-refs-pull-115312-merge-c8aa9ab112ad47839a/System.Net.Mail.Functional.Tests/1/console.46ccc21a.log?helixlogtype=result

@jkotasjkotas added area-System.Net and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels May 6, 2025
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@jkotas

jkotas commented May 6, 2025

Copy link
Copy Markdown
Member

It looks like the issues are related to timeouts / space limitations

The failures are networking related hangs, very similar to the hangs that lead to disabling of Azure Linux 3 testing. #114152 is an example of networking related hang that we have seen earlier.

The Azure Linux 3 symcrypt problem does not appear to fixed. My guess is that the fix is not deployed to our CI machines. These CI legs run physical OS, they do not run containerized OS. #114276 (comment) does not imply that the fix is deployed to the affected CI machines.

@richlander

Copy link
Copy Markdown
MemberAuthor

Oh, you are right. I didn't think of the E2E workflow.

@ilyas1974 -- Can you check which symcrympt version is on the CI machines? The context link above should help.

@ilyas1974

Copy link
Copy Markdown

The image currently associated with those pools are from 4/17. Currently checking to see what version of symcrympt is installed on these systems.

@vcsjones

Copy link
Copy Markdown
Member

A discussion point in a different medium was raised that I wanted to make sure was better understood - do we have Linux testing that we feel is adequate that is not Azure Linux 3? Azure Linux 3's OpenSSL is different enough from vanilla OpenSSL that they are more or less two different things. We wanted to make sure we also have CI protections that are representative of what the Linux community uses, too.

@richlander

richlander commented May 6, 2025

Copy link
Copy Markdown
MemberAuthor

Good point. The original plan was to switch to all AZL3 VMs. That's now looking like an impractical plan, for two reasons:

  • It's quite different (what you said).
  • Concerns about ongoing quality/reliability/breakage (we need to be conservative).

I'm concerned that SymCrypt changes will continue to break us. We need a way to easily fallback to Ubuntu. That would be much easier if we had a guarded rollout scheme (via PR), where VMs were not updated in place.

Just so I/we understand ... Some of these crypto APIs must have a kernel implementation. It's the kernel that gets shared between host and guest and (AFAIK) nothing else. That's the architectural reason for this conversation, yes?

@vcsjones

vcsjones commented May 6, 2025

Copy link
Copy Markdown
Member

@ilyas1974 Specifically, the package under question is SymCrypt-OpenSSL.

The fix is in >= 1.8.0.

The image currently associated with those pools are from 4/17.

Based on the repo information, 1.8.0 was released on 4/29. I suspect the VMs are on 1.7.0-1.azl3.

@richlander

Copy link
Copy Markdown
MemberAuthor

The May Azure Linux 3.0 update has been released! (3.0.20250429)

Just got this in mail.

@jkotas

Copy link
Copy Markdown
Member

Some of these crypto APIs must have a kernel implementation. It's the kernel that gets shared between host and guest and (AFAIK) nothing else. That's the architectural reason for this conversation, yes?

Standard openssl configuration does not have any special kernel components. Some containerized distros run on Azure Linux kernel and we have not observed any issues with it so far: https://github.com/dotnet/runtime/blob/main/eng/pipelines/coreclr/templates/helix-queues-setup.yml#L79-L82

That would be much easier if we had a guarded rollout scheme (via PR), where VMs were not updated in place.

Right, this is ongoing pain from unguarded rollouts that we have been living with for years. I would not over index on the Azure Linux symcrypt problem. I can bet that the next 5 surprise CI breaks from unguarded image rollouts are going to somewhere else.

@richlander

richlander commented May 6, 2025

Copy link
Copy Markdown
MemberAuthor

I see now. I just re-looked at the changes. This is the scenario where we're testing with raw VMs. That resolves my confusion. A simple solution is that we don't do that with Azure Linux (and close this PR).

@jkotas

Copy link
Copy Markdown
Member

A simple solution is that we don't do that with Azure Linux

There are two aspects:

  • Whether to test Azure Linux in default CI: Our strategy has been to have a mix of OSes and architectures in the default CI so that we have high probability of finding most breakages quickly. We need to have Azure Linux coverage somewhere. Dropping Azure Linux testing in the default CI runs would not be an improvement. Azure Linux breakages come from both Azure Linux changes (less common) and our code changes (more common). If we do not have Azure Linux testing in default CI, more breakages will sneak through to outer loop.
  • Whether to test Azure Linux on raw VMs: We should have Azure Linux raw VMs coverage somewhere. We can choose to move it to outer loop (as long as we have testing for containerized Azure Linux in default CI).

@richlander

Copy link
Copy Markdown
MemberAuthor

Yes, I was thinking of having containerized Azure Linux in default CI, which you had suggested earlier. The idea of raw VM testing in outer loop hadn't occurred to me. That is likely a good idea. I will close this PR since it is no longer relevant.

I read an underlying statement that raw VM testing is an important modality.

@jkotas
jkotas deleted the revert-114268-azl branch May 23, 2025 22:04
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 23, 2025
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

@richlander@jkotas@ilyas1974@vcsjones
, '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

Revert "Switch libraries testing to Ubuntu 22 temporarily" - #115312

Closed
richlander wants to merge 1 commit into
mainfrom
revert-114268-azl
Closed

Revert "Switch libraries testing to Ubuntu 22 temporarily"#115312
richlander wants to merge 1 commit into
mainfrom
revert-114268-azl

Conversation

@richlander

Copy link
Copy Markdown
Member

CopilotAI review requested due to automatic review settings May 5, 2025 19:46
@ghostghost added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label May 5, 2025

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 reverts the earlier temporary change that switched libraries testing to Ubuntu 22, restoring the previous helix queue names.

  • Reverts the public helix queue from "Ubuntu.2204.Amd64.Open" to "azurelinux.3.amd64.open".
  • Reverts the internal helix queue from "Ubuntu.2204.Amd64" to "azurelinux.3.amd64".
Comments suppressed due to low confidence (2)

eng/pipelines/coreclr/templates/helix-queues-setup.yml:101

  • [nitpick] Ensure that changing the queue name for the public team project to "azurelinux.3.amd64.open" is consistent with naming conventions used across the pipeline configuration.
- - azurelinux.3.amd64.open

eng/pipelines/coreclr/templates/helix-queues-setup.yml:103

  • [nitpick] Verify that the internal team project queue name "azurelinux.3.amd64" aligns with the established naming patterns in the broader system.
- - azurelinux.3.amd64

@richlander

Copy link
Copy Markdown
MemberAuthor

It looks like the issues are related to timeouts / space limitations. I think we were seeing those before. Did anyone develop any insight on that? I'm not sure how that conversation ended. @mthalman@AndyAyersMS@jkotas@dougbu@agocke

Example:

 System.Net.Mail.Tests.SmtpClientTlsTest_Send.ClientCertificateRequired_Sent [FAIL]
Assert.Null() Failure: Value is not null
Expected: null
Actual: System.Net.Mail.SmtpException: The operation has timed out.
at System.Net.Mail.SmtpClient.Send(MailMessage message) in /_/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpClient.cs:line 521
at System.Net.Mail.Tests.LoopbackServerTestBase`1.SendMailInternal(MailMessage msg, CancellationToken cancellationToken, Nullable`1 asyncExpectDirectException) in /_/src/libraries/System.Net.Mail/tests/Functional/LoopbackServerTestBase.cs:line 74 Stack Trace: /_/src/libraries/System.Net.Mail/tests/Functional/LoopbackServerTestBase.cs(155,0): at System.Net.Mail.Tests.LoopbackServerTestBase`1.SendMail(MailMessage msg, CancellationToken cancellationToken) /_/src/libraries/System.Net.Mail/tests/Functional/SmtpClientTlsTest.cs(159,0): at System.Net.Mail.Tests.SmtpClientTlsTest`1.ClientCertificateRequired_Sent() --- End of stack trace from previous location --- Output: Server> 220 localhost Client> EHLO a000K7N Server> 250-localhost, mock server here> 250-STARTTLS Server> 250 AUTH PLAIN LOGIN Client> STARTTLS Server> 220 Ready to start TLS

https://helixr1107v0xdcypoyl9e7f.blob.core.windows.net/dotnet-runtime-refs-pull-115312-merge-c8aa9ab112ad47839a/System.Net.Mail.Functional.Tests/1/console.46ccc21a.log?helixlogtype=result

@jkotasjkotas added area-System.Net and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels May 6, 2025
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@jkotas

jkotas commented May 6, 2025

Copy link
Copy Markdown
Member

It looks like the issues are related to timeouts / space limitations

The failures are networking related hangs, very similar to the hangs that lead to disabling of Azure Linux 3 testing. #114152 is an example of networking related hang that we have seen earlier.

The Azure Linux 3 symcrypt problem does not appear to fixed. My guess is that the fix is not deployed to our CI machines. These CI legs run physical OS, they do not run containerized OS. #114276 (comment) does not imply that the fix is deployed to the affected CI machines.

@richlander

Copy link
Copy Markdown
MemberAuthor

Oh, you are right. I didn't think of the E2E workflow.

@ilyas1974 -- Can you check which symcrympt version is on the CI machines? The context link above should help.

@ilyas1974

Copy link
Copy Markdown

The image currently associated with those pools are from 4/17. Currently checking to see what version of symcrympt is installed on these systems.

@vcsjones

Copy link
Copy Markdown
Member

A discussion point in a different medium was raised that I wanted to make sure was better understood - do we have Linux testing that we feel is adequate that is not Azure Linux 3? Azure Linux 3's OpenSSL is different enough from vanilla OpenSSL that they are more or less two different things. We wanted to make sure we also have CI protections that are representative of what the Linux community uses, too.

@richlander

richlander commented May 6, 2025

Copy link
Copy Markdown
MemberAuthor

Good point. The original plan was to switch to all AZL3 VMs. That's now looking like an impractical plan, for two reasons:

  • It's quite different (what you said).
  • Concerns about ongoing quality/reliability/breakage (we need to be conservative).

I'm concerned that SymCrypt changes will continue to break us. We need a way to easily fallback to Ubuntu. That would be much easier if we had a guarded rollout scheme (via PR), where VMs were not updated in place.

Just so I/we understand ... Some of these crypto APIs must have a kernel implementation. It's the kernel that gets shared between host and guest and (AFAIK) nothing else. That's the architectural reason for this conversation, yes?

@vcsjones

vcsjones commented May 6, 2025

Copy link
Copy Markdown
Member

@ilyas1974 Specifically, the package under question is SymCrypt-OpenSSL.

The fix is in >= 1.8.0.

The image currently associated with those pools are from 4/17.

Based on the repo information, 1.8.0 was released on 4/29. I suspect the VMs are on 1.7.0-1.azl3.

@richlander

Copy link
Copy Markdown
MemberAuthor

The May Azure Linux 3.0 update has been released! (3.0.20250429)

Just got this in mail.

@jkotas

Copy link
Copy Markdown
Member

Some of these crypto APIs must have a kernel implementation. It's the kernel that gets shared between host and guest and (AFAIK) nothing else. That's the architectural reason for this conversation, yes?

Standard openssl configuration does not have any special kernel components. Some containerized distros run on Azure Linux kernel and we have not observed any issues with it so far: https://github.com/dotnet/runtime/blob/main/eng/pipelines/coreclr/templates/helix-queues-setup.yml#L79-L82

That would be much easier if we had a guarded rollout scheme (via PR), where VMs were not updated in place.

Right, this is ongoing pain from unguarded rollouts that we have been living with for years. I would not over index on the Azure Linux symcrypt problem. I can bet that the next 5 surprise CI breaks from unguarded image rollouts are going to somewhere else.

@richlander

richlander commented May 6, 2025

Copy link
Copy Markdown
MemberAuthor

I see now. I just re-looked at the changes. This is the scenario where we're testing with raw VMs. That resolves my confusion. A simple solution is that we don't do that with Azure Linux (and close this PR).

@jkotas

Copy link
Copy Markdown
Member

A simple solution is that we don't do that with Azure Linux

There are two aspects:

  • Whether to test Azure Linux in default CI: Our strategy has been to have a mix of OSes and architectures in the default CI so that we have high probability of finding most breakages quickly. We need to have Azure Linux coverage somewhere. Dropping Azure Linux testing in the default CI runs would not be an improvement. Azure Linux breakages come from both Azure Linux changes (less common) and our code changes (more common). If we do not have Azure Linux testing in default CI, more breakages will sneak through to outer loop.
  • Whether to test Azure Linux on raw VMs: We should have Azure Linux raw VMs coverage somewhere. We can choose to move it to outer loop (as long as we have testing for containerized Azure Linux in default CI).

@richlander

Copy link
Copy Markdown
MemberAuthor

Yes, I was thinking of having containerized Azure Linux in default CI, which you had suggested earlier. The idea of raw VM testing in outer loop hadn't occurred to me. That is likely a good idea. I will close this PR since it is no longer relevant.

I read an underlying statement that raw VM testing is an important modality.

@jkotas
jkotas deleted the revert-114268-azl branch May 23, 2025 22:04
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 23, 2025
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

@richlander@jkotas@ilyas1974@vcsjones