Skip to content

Temporarily disable the SslStream benchmark runs#2139

Merged
LoopedBard3 merged 1 commit into
aspnet:mainfrom
LoopedBard3:TemporarilyDisableSSLStreamBenchmarks
Jan 12, 2026
Merged

Temporarily disable the SslStream benchmark runs#2139
LoopedBard3 merged 1 commit into
aspnet:mainfrom
LoopedBard3:TemporarilyDisableSSLStreamBenchmarks

Conversation

@LoopedBard3

@LoopedBard3 LoopedBard3 commented Jan 12, 2026

Copy link
Copy Markdown
Contributor

Temporarily disable the SslStream benchmark runs as the app does not seem to be exiting properly, causing follow-up test runs to timeout.

@LoopedBard3 LoopedBard3 self-assigned this Jan 12, 2026
@LoopedBard3 LoopedBard3 added bug not-running Scenarios that might be broken labels Jan 12, 2026
@sebastienros

Copy link
Copy Markdown
Member

But this file is generated. Isn't there a property on the steps to just ignore them? Or comment the job in the inner yaml (which I have done many times already)

…seem to be exiting properly, causing follow-up test runs to timeout.
@LoopedBard3 LoopedBard3 force-pushed the TemporarilyDisableSSLStreamBenchmarks branch from 11f8517 to 0143a37 Compare January 12, 2026 18:38
@LoopedBard3

Copy link
Copy Markdown
Contributor Author

Just pushed an updated, let me know if that is more in-line with the approach you mentioned.

@LoopedBard3 LoopedBard3 merged commit a65a7ec into aspnet:main Jan 12, 2026
2 checks passed
@LoopedBard3 LoopedBard3 deleted the TemporarilyDisableSSLStreamBenchmarks branch January 12, 2026 18:52
LoopedBard3 added a commit to LoopedBard3/Benchmarks that referenced this pull request May 18, 2026
…rios

Root cause (issue aspnet#2140 / disabled in aspnet#2139):
Crank's Linux agent stops jobs with SIGTERM first (5 s grace) then SIGINT.
BenchmarkApp only handled Console.CancelKeyPress (SIGINT), so SIGTERM
bypassed the graceful cancellation path. In-flight TLS/QUIC connections
never observed cancellation and could leave the listen port stranded for
the next run -- which is what 'app does not seem to be exiting properly'
in aspnet#2139 actually described.

Fix is three layered:

1. BenchmarkApp now registers PosixSignalRegistration for SIGTERM and
   SIGQUIT in addition to Console.CancelKeyPress, so GlobalCts.Cancel
   runs on every shutdown signal crank can send. PosixSignalRegistration
   is no-op-friendly on Windows so the existing Ctrl+C path is unchanged.

2. BenchmarkApp wraps RunBenchmarkAsync with a 15 s hard shutdown
   deadline after cancellation. If disposal stalls (stuck SslStream
   close_notify, QuicConnection drain, etc.) Environment.Exit guarantees
   we release the port before crank's SIGKILL fallback fires.

3. BenchmarkServer now tracks per-accepted-connection Task.Run handles
   and drains them with a 10 s timeout before letting the listener
   dispose, so SslStream/Quic disposal doesn't race the listener teardown.

Re-enable in build/sslstream-scenarios.yml: remove the '&& false' gate
from all four scenario matrices (SslStream handshake, QUIC handshake,
SslStream read-write, QUIC read-write). 66 publishes added back, on
alternate 12 h ticks via the existing
Math.round(Date.now() / 43200000) % 2 == 0 modulo (preserved on all four).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug not-running Scenarios that might be broken

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants