Skip to content

Disable Ntex scenarios in CI (Plaintext, Json, Fortunes)#2173

Merged
LoopedBard3 merged 1 commit into
aspnet:mainfrom
LoopedBard3:loopedbard3/disable-ntex-fortunes
May 15, 2026
Merged

Disable Ntex scenarios in CI (Plaintext, Json, Fortunes)#2173
LoopedBard3 merged 1 commit into
aspnet:mainfrom
LoopedBard3:loopedbard3/disable-ntex-fortunes

Conversation

@LoopedBard3
Copy link
Copy Markdown
Contributor

@LoopedBard3 LoopedBard3 commented May 14, 2026

All three Ntex scenarios (Plaintext, Json, Fortunes) have been failing in benchmarks-ci-01 and benchmarks-ci-02 every run since the Mar 26 build. The docker builds for both ntex-plt.dockerfile and ntex-db.dockerfile fail to compile:

error[E0308]: mismatched types
   --> /usr/local/cargo/git/checkouts/postgres-.../tokio-postgres/src/query.rs:77:52
   |
77 |             encode_bind(statement, params, "", buf)?;
   |             -----------                        ^^^ expected `&mut BytesMut`, found `&mut BytePages`
error: could not compile `tokio-postgres` (lib) due to 9 previous errors

Root cause

In TechEmpower/FrameworkBenchmarks/frameworks/Rust/ntex/Cargo.toml, tokio-postgres is a top-level dependency (not feature-gated) pointing at the fafhrd91/postgres ntex-3 fork (frozen at commit fbc7a17). Every ntex binary in the workspace builds it — including ntex-plt, not just ntex-db.

The caret-versioned ntex-bytes = { version = "1.5", features=["simd"] } resolves to ntex-bytes 1.6.0 (released 2026-05-02), which introduced the BytePages type. The fafhrd91 fork still uses BytesMut, so the workspace fails to compile end-to-end.

TechEmpower/FrameworkBenchmarks is now archived (last push 2026‑03‑24), so a real upstream fix is not coming.

Change

Comment out all three Ntex scenarios in the three places they run:

File Scenarios disabled
build/frameworks-scenarios.yml Ntex Plaintext, Ntex Json
build/frameworks-database-scenarios.yml Ntex Fortunes
build/containers-scenarios.yml Json NTex, Fortunes NTex

Each disable carries an explanatory comment that cross-references the other sites, so it's easy to re-enable as a set if someone forks/pins the ntex source back into a working state.

Context

Failing crank invocations from the latest CI runs:

  • Ntex Plaintext (build 2974984): docker build --pull -t benchmarks_ntex-plt -f frameworks/Rust/ntex/ntex-plt.dockerfile .../frameworks/Rust/ntex/
  • Ntex Json (same build): same dockerfile, exits 101
  • Ntex Fortunes (build 2974764): docker build --pull -t benchmarks_ntex-db -f frameworks/Rust/ntex/ntex-db.dockerfile .../frameworks/Rust/ntex/

Drafting for visibility — the Blazor Wasm half of the CI red is being addressed separately (dotnet/aspnetcore#66686 upstream, with a short-term local workaround in LoopedBard3/Benchmarks#4).

@LoopedBard3 LoopedBard3 marked this pull request as ready for review May 14, 2026 22:14
@LoopedBard3 LoopedBard3 requested review from DrewScoggins, Copilot and sebastienros and removed request for sebastienros May 14, 2026 22:14
@LoopedBard3 LoopedBard3 self-assigned this May 14, 2026
Copy link
Copy Markdown

Copilot AI left a comment

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 disables the failing Ntex Fortunes benchmark runs in CI while leaving other Ntex scenarios active.

Changes:

  • Comments out the Ntex Fortunes database scenario entry.
  • Comments out the Ntex Fortunes container matrix scenario entry.
  • Adds explanatory comments documenting the dependency breakage and re-enable guidance.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
build/frameworks-database-scenarios.yml Disables the fortunes_ntex database benchmark and documents the reason.
build/containers-scenarios.yml Disables the fortunes_ntex container matrix benchmark and links to the matching database scenario disable.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@LoopedBard3 LoopedBard3 marked this pull request as draft May 14, 2026 22:23
@LoopedBard3
Copy link
Copy Markdown
Contributor Author

Converting back to draft as there may be more NTex tests to disable.

The Ntex Plaintext, Ntex Json, and Ntex Fortunes scenarios have been
failing in benchmarks-ci-01 and benchmarks-ci-02 every run since the
Mar 26 build. The docker build for ntex-plt.dockerfile and
ntex-db.dockerfile both fail to compile with:

  error[E0308]: mismatched types
     --> tokio-postgres/src/query.rs:77:52
     |
  77 |             encode_bind(statement, params, "", buf)?;
     |             -----------                        ^^^
     |                       expected &mut BytesMut, found &mut BytePages
  error: could not compile `tokio-postgres` (lib) due to 9 previous errors

The root cause is in TechEmpower/FrameworkBenchmarks
frameworks/Rust/ntex/Cargo.toml: `tokio-postgres` is a *top-level*
dependency on the fafhrd91/postgres `ntex-3` fork (frozen at commit
fbc7a17), not a feature-gated one. Every ntex binary in the
workspace builds it, including ntex-plt. The caret-versioned
`ntex-bytes = "1.5"` resolves to ntex-bytes 1.6.0 (released
2026-05-02), which introduced the BytePages type. The fafhrd91 fork
still uses BytesMut, so the workspace cannot compile.

TechEmpower/FrameworkBenchmarks is now archived
(https://github.com/TechEmpower/FrameworkBenchmarks, last push
2026-03-24), so a real upstream fix is not coming.

Disable all three ntex scenarios in the three places they run:
  - build/frameworks-scenarios.yml         (Ntex Plaintext, Ntex Json)
  - build/frameworks-database-scenarios.yml (Ntex Fortunes)
  - build/containers-scenarios.yml          (Json NTex, Fortunes NTex)

Each disable carries an explanatory comment pointing at the other
sites, so it is easy to re-enable as a set if someone forks/pins the
ntex source back into a working state.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@LoopedBard3 LoopedBard3 force-pushed the loopedbard3/disable-ntex-fortunes branch from fd706e4 to ce79929 Compare May 14, 2026 22:35
@LoopedBard3 LoopedBard3 changed the title Disable Ntex Fortunes scenario in CI Disable Ntex scenarios in CI (Plaintext, Json, Fortunes) May 14, 2026
LoopedBard3 added a commit to LoopedBard3/Benchmarks that referenced this pull request May 14, 2026
The Blazor Wasm and three Ntex scenarios have been failing in
benchmarks-ci-01 and benchmarks-ci-02 since the Mar 26 build. Both
fail at docker build --pull on dockerfiles pulled from upstream repos
that have rolled forward in incompatible ways. Take a different
approach for each:

Blazor Wasm (docker/wasm-performance/):
  The upstream dockerfile at dotnet/aspnetcore installs Node.js 21 via
  https://deb.nodesource.com/setup_21.x. Recent aspnetcore npm packages
  (balanced-match, brace-expansion, eslint-visitor-keys, minimatch,
  @tootallnate/once, ...) require node 18 || 20 || >=22, and the
  rollup-driven 'npm run build' step now fails on Node 21 with
  ERR_REQUIRE_ESM. Add a local copy of the dockerfile (and its
  compose JSON and exec.sh) under docker/wasm-performance/ using
  setup_22.x, and point build/job-variables.yml at it via the local
  raw.githubusercontent.com URL. Track upstream by leaving everything
  else identical so future changes can be diff-rebased.

  An upstream fix is being pursued in dotnet/aspnetcore (PR #66686).
  Once that merges, drop docker/wasm-performance/ and revert
  build/job-variables.yml to the upstream config URL.

Ntex Plaintext / Ntex Json / Ntex Fortunes (disable):
  TechEmpower's frameworks/Rust/ntex/Cargo.toml has tokio-postgres as
  a *top-level* dep (not feature-gated) on the fafhrd91/postgres
  ntex-3 fork (frozen at commit fbc7a17). Every ntex binary in the
  workspace builds it - including ntex-plt, not just ntex-db. The
  caret-versioned `ntex-bytes = "1.5"` resolves to ntex-bytes 1.6.0
  (released 2026-05-02) which introduced the BytePages type. The
  fafhrd91 fork still uses BytesMut, so the workspace fails to
  compile end-to-end (E0308 mismatched-types errors).

  TechEmpower/FrameworkBenchmarks is now archived
  (https://github.com/TechEmpower/FrameworkBenchmarks), so a real
  upstream fix is not coming. Disable all three Ntex scenarios in
  the three places they run:
    - build/frameworks-scenarios.yml         (Ntex Plaintext, Ntex Json)
    - build/frameworks-database-scenarios.yml (Ntex Fortunes)
    - build/containers-scenarios.yml          (Json NTex, Fortunes NTex)

  An aspnet/Benchmarks PR is open with the same disable:
  aspnet#2173.

Verified the Wasm fix locally with docker build --pull on Docker
Desktop against the same dotnet/aspnetcore main commit (29e4b0d3):
  - upstream main dockerfile (setup_21.x): fails at 'npm run build'
    with ERR_REQUIRE_ESM in http-proxy-agent / @tootallnate/once
  - this PR's docker/wasm-performance/dockerfile (setup_22.x):
    publishes Wasm.Performance.Driver and produces the final
    playwright image successfully

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@LoopedBard3 LoopedBard3 marked this pull request as ready for review May 15, 2026 17:34
@LoopedBard3 LoopedBard3 merged commit a375ca2 into aspnet:main May 15, 2026
2 checks passed
@LoopedBard3 LoopedBard3 deleted the loopedbard3/disable-ntex-fortunes branch May 15, 2026 20:15
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.

3 participants