Skip to content

FIX: stabilize release builds on macOS and ARM64 Linux - #841

Open
Gaurav Sharma (bewithgaurav) wants to merge 1 commit into
mainfrom
bewithgaurav/fix-release-pipeline-timeouts
Open

Gaurav Sharma (bewithgaurav) wants to merge 1 commit into
mainfrom
bewithgaurav/fix-release-pipeline-timeouts

Conversation

@bewithgaurav

@bewithgaurav Gaurav Sharma (bewithgaurav) commented Oct 12, 2026 •

Copy link
Copy Markdown
Collaborator

AB#49327

Summary

Ports the two reviewed ADO release-pipeline fixes to GitHub for repository parity.

  • Align macOS release setup with PR validation: install CMake, Docker, and Colima in one Homebrew transaction without brew update, then start Colima separately.
  • Remove the unavailable qemu fallback and fixed startup sleep from the macOS release job.
  • Increase Linux release jobs from 120 to 180 minutes for six serial Python build/test cycles.
  • Remove each completed isolated test directory to reduce disk accumulation.

Evidence

  • ADO build 182211 repeatedly timed out while installing and starting Colima across the macOS matrix.
  • ADO build 182234 completed Python 3.10-3.14 on both ARM64 Linux distributions, then exceeded the 120-minute job limit during Python 3.15.
  • The corresponding ADO fixes were reviewed in PRs 8581 and 8583.

Validation

  • Parsed both YAML templates with PyYAML.
  • Ran bash -n against every modified shell block.
  • Verified exact resulting blob parity with ADO commits 0e67e89 and d4f84fe.
  • git diff --check passed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions

github-actions Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

PR Performance Report

✅ No regression detected

No consistent slowdowns detected across all 2 environments.

0 IMPROVEMENTS 0 SLOWDOWNS 2/2 ENVIRONMENTS

Coverage: 2 of 2 environments completed. Advisory result; does not block merging.

Performance diagnostics

Phase times are inclusive diagnostics and must not be added together. They identify where measured time changed, not why it changed.

No affected phases or call-count changes were recorded.

All database tasks and timings

Unix / SQL Server 2022

Database task Before After Paired change Result
Connection opening 10.582 ms 10.246 ms -1.5% no signal
SELECT queries 1.076 ms 1.112 ms +1.1% no signal
Row insertion 35.818 ms 34.841 ms -2.8% no signal
Executemany inserts 156.731 ms 158.267 ms -0.3% no signal
Fetch-all queries 120.261 ms 122.799 ms +1.7% no signal
Row-by-row fetching 14.234 ms 14.197 ms +0.1% no signal
Batched row fetching 116.135 ms 117.697 ms +0.2% no signal
Transaction commit and rollback 114.481 ms 114.605 ms -0.6% no signal
Arrow row fetching 93.804 ms 95.081 ms +1.4% no signal
100,000-row insertion 439.170 ms 456.059 ms +3.4% no signal
Row fetching in batches of 100 121.445 ms 121.551 ms +0.1% no signal
Row fetching in batches of 10,000 143.220 ms 141.186 ms +6.3% no signal
Repeated positional queries 33.780 ms 34.644 ms +0.9% no signal
Repeated named-parameter queries 35.796 ms 37.388 ms +1.5% no signal
Legacy 100,000-row insertion 350.479 ms 354.477 ms +0.4% no signal
Insertion with explicit input sizes 490.741 ms 490.898 ms +1.2% no signal
Joined aggregation queries 177.523 ms 176.727 ms -0.5% no signal
Large joined-result fetching 181.672 ms 184.014 ms +2.0% no signal
1.2-million-row fetching 3471.308 ms 3501.300 ms +1.2% no signal
Common table expression queries 5.310 ms 5.316 ms +0.7% no signal
256 KiB VARCHAR(MAX) / fetchall() 1.241 ms 1.312 ms +5.7% no signal
10,000 scalar values / fetchval() (debug disabled) 106.066 ms 106.556 ms +0.7% no signal

Unix / SQL Server 2025

Database task Before After Paired change Result
Connection opening 97.939 ms 97.576 ms -0.4% no signal
SELECT queries 1.072 ms 1.207 ms +11.2% no signal
Row insertion 34.603 ms 34.650 ms -1.3% no signal
Executemany inserts 152.431 ms 153.437 ms +0.2% no signal
Fetch-all queries 122.446 ms 123.254 ms +0.7% no signal
Row-by-row fetching 15.296 ms 14.650 ms -6.1% no signal
Batched row fetching 118.746 ms 118.037 ms -1.2% no signal
Transaction commit and rollback 115.069 ms 114.278 ms -0.6% no signal
Arrow row fetching 96.100 ms 95.243 ms -0.8% no signal
100,000-row insertion 474.559 ms 430.836 ms -6.5% no signal
Row fetching in batches of 100 122.866 ms 122.489 ms -0.2% no signal
Row fetching in batches of 10,000 141.729 ms 134.745 ms -6.1% no signal
Repeated positional queries 33.718 ms 33.303 ms -0.0% no signal
Repeated named-parameter queries 36.470 ms 35.577 ms -1.0% no signal
Legacy 100,000-row insertion 353.420 ms 356.789 ms +1.4% no signal
Insertion with explicit input sizes 513.008 ms 491.098 ms -4.4% no signal
Joined aggregation queries 161.828 ms 159.599 ms -0.9% no signal
Large joined-result fetching 188.085 ms 190.503 ms +5.2% no signal
1.2-million-row fetching 3561.124 ms 3558.315 ms -0.0% no signal
Common table expression queries 5.302 ms 5.258 ms -1.3% no signal
256 KiB VARCHAR(MAX) / fetchall() 1.525 ms 1.548 ms +1.2% no signal
10,000 scalar values / fetchval() (debug disabled) 110.283 ms 108.775 ms -1.0% no signal
Build and measurement details

ADO build 182292

PR head: 22cd57aef9ba3473325a7cfa8a55225ca754e901
Base: acdb42cfd39c9c59824272170286ca9bb1220052
Measured merge: 96ccce44c2af949e1dedffba045245a692a81121

  • Unix / SQL Server 2022: Python 3.12.3, x86_64, SQL 16.0.4295.3; 5 paired comparisons and 1 warmup.
  • Unix / SQL Server 2025: Python 3.12.3, x86_64, SQL 17.0.5005.3; 5 paired comparisons and 1 warmup.

A consistent change requires more than 20% median paired movement, at least 1 ms between the median runtimes, and at least 80% of pairs exceeding the relative threshold in the same direction. A slowdown without enough pair agreement is reported as inconsistent.

The displayed change is the median of paired before-and-after ratios. It is not recalculated from the two displayed median runtimes.

Both revisions use profiling-enabled builds on the same agent and database, with alternating order and discarded warmups. Results are diagnostic and do not represent production-wheel latency.

Raw samples and logs are attached to the ADO run as profiler-* artifacts.

@github-actions github-actions Bot added the pr-size: small Minimal code update label Oct 12, 2026
@github-actions

Copy link
Copy Markdown

📊 Code Coverage Report

🔥 Diff Coverage

100%


🎯 Overall Coverage

85%


📈 Total Lines Covered: 9443 out of 11092
📁 Project: mssql-python


Diff Coverage

Diff: main...HEAD, staged and unstaged changes

No lines with coverage information in this diff.


📋 Files Needing Attention

📉 Files with overall lowest coverage (click to expand)
mssql_python.pybind.performance_counter.hpp: 0.7%
mssql_python.pybind.logger_bridge.cpp: 57.9%
mssql_python.pybind.ddbc_bindings.h: 62.6%
mssql_python.pybind.logger_bridge.hpp: 70.8%
mssql_python.pybind.connection.connection_pool.cpp: 82.3%
mssql_python.pybind.connection.connection.cpp: 83.1%
mssql_python.logging.py: 86.2%
mssql_python.pooling.py: 90.1%
mssql_python.pybind.fetch_temporal.hpp: 92.1%
mssql_python.cursor.py: 92.5%

🔗 Quick Links

⚙️ Build Summary 📋 Coverage Details

View Azure DevOps Build

Browse Full Coverage Report

Copilot AI 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.

🟢 Approval recommended

The focused pipeline changes are consistent with existing validation behavior and introduce no unresolved issues.

0 open findings

What changed in this PR

Stabilizes release builds by aligning macOS setup with PR validation and accommodating slower ARM64 Linux builds.

Changes:

  • Consolidates macOS Homebrew installation and simplifies Colima startup.
  • Extends Linux job timeouts and removes completed test directories.
File Description
OneBranchPipelines/​stages/​build-macos-single-stage.yml Streamlines Homebrew and Colima setup.
OneBranchPipelines/​stages/​build-linux-single-stage.yml Extends timeout and reduces test-directory accumulation.

🧠 Review effort: Balanced


💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr-size: small Minimal code update

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants