Skip to content

Switch UD reporting to 5-group test matrix, fix concurrency + verification - #4329

Draft
sfc-gh-fpawlowski wants to merge 1 commit into
SNOW-2912540-write-pandas-raw-msgfrom
SNOW-2912540-ud-reporting
Draft

Switch UD reporting to 5-group test matrix, fix concurrency + verification#4329
sfc-gh-fpawlowski wants to merge 1 commit into
SNOW-2912540-write-pandas-raw-msgfrom
SNOW-2912540-ud-reporting

Conversation

@sfc-gh-fpawlowski

Copy link
Copy Markdown

What

Replaces this branch's 2-group UD test matrix (integration/scala, ported from ud-ci-workflow-auto-triggered-full) with the 5-group architecture (unit-integ/scala/modin/datasource/doctest, ported from ud-ci-workflow-auto-triggered-full-improvements): UD is built once via a dedicated build-ud job (wheel from snowflakedb/universal-driver) and consumed as a downloaded artifact, instead of each test job pip-installing a git ref inline.

Two deliberate deviations from ud-ci-workflow-auto-triggered-full-improvements

  1. Concurrency block removed. The source branch's concurrency: group: ud-tests-${{ github.ref }}, cancel-in-progress: true keys only on the git ref hosting the workflow file, not on the UD ref under test. odbc-reports dispatches this same ref repeatedly, concurrently, with a different ud-ref per historical snapshot date — that keying would cancel one in-flight backfill run whenever another started, and a cancelled run reports as a permanent errors: 1 rather than a retriable missing entry. Confirmed none of odbc-reports' other four UD-dispatch sibling jobs (snowflake-cli, snowflake-sqlalchemy, dbt-adapters, airflow) use a concurrency block either, so this matches the existing convention rather than inventing a one-off.

  2. Fail-fast UD-install verification redesigned to poison output, not just exit. This job has continue-on-error: true at the job level plus a separate if: always() "Extract results" step — a bare exit 1 wouldn't stop a silently-installed legacy connector's misleading pass/fail counts from being scraped and reported as real UD results. The verification step now overwrites reports/test-output.log with 1 errors on failure so the downstream extraction reflects the truth.

scripts/tox_install_cmd.sh needed no changes (already hardened identically on both source branches: set -o pipefail, --no-deps on the UD reinstall). tox.ini copied verbatim from ud-ci-workflow-auto-triggered-full-improvements (already passes through ud_connector_path/UD_RERUN_FLAGS/JUNIT_REPORT_DIR).

Scope

No src/ or tests/ changes — workflow/CI files only.

Context

This is a long-lived CI-reference branch (same lifecycle as ud-ci-workflow-auto-triggered-full-improvements), not intended to merge into main — it's what snowflake-eng/odbc-reports' update-python-tests-cache.yml dispatches against to track Snowpark-on-UD pass rate over time. This PR is for reviewability of the diff.

@sfc-gh-fpawlowski
sfc-gh-fpawlowski requested a review from a team as a code owner August 24, 2026 00:10
@sfc-gh-fpawlowski
sfc-gh-fpawlowski requested review from sfc-gh-bkogan, sfc-gh-mayliu and sfc-gh-yixie and removed request for a team August 24, 2026 00:10

@snowflake-security-bot snowflake-security-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Snowflake Security Review

Security grade: A — Passed

This PR was classified as LOW risk by the automated pre-screen.

@snowflake-security-bot snowflake-security-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Snowflake Security Review

Security grade: A — Passed

This PR was classified as LOW risk by the automated pre-screen.

@snowflake-security-bot snowflake-security-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Snowflake Security Review

Security grade: A — Passed

This PR was classified as LOW risk by the automated pre-screen.

@snowflake-security-bot snowflake-security-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Snowflake Security Review

Security grade: A — Passed

This PR was classified as LOW risk by the automated pre-screen.

@snowflake-security-bot snowflake-security-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Snowflake Security Review

Security grade: A — Passed

This PR was classified as LOW risk by the automated pre-screen.

@snowflake-security-bot snowflake-security-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Snowflake Security Review

Security grade: A — Passed

This PR was classified as LOW risk by the automated pre-screen.

@snowflake-security-bot snowflake-security-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Snowflake Security Review

Security grade: A — Passed

This PR was classified as LOW risk by the automated pre-screen.

@snowflake-security-bot snowflake-security-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Snowflake Security Review

Security grade: A — Passed

This PR was classified as LOW risk by the automated pre-screen.

@snowflake-security-bot snowflake-security-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Snowflake Security Review

Security grade: A — Passed

This PR was classified as LOW risk by the automated pre-screen.

@snowflake-security-bot snowflake-security-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Snowflake Security Review

Security grade: A — Passed

This PR was classified as LOW risk by the automated pre-screen.

@snowflake-security-bot snowflake-security-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Snowflake Security Review

Security grade: A — Passed

This PR was classified as LOW risk by the automated pre-screen.

@snowflake-security-bot snowflake-security-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Snowflake Security Review

Security grade: A — Passed

This PR was classified as LOW risk by the automated pre-screen.

@snowflake-security-bot snowflake-security-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Snowflake Security Review

Security grade: A — Passed

This PR was classified as LOW risk by the automated pre-screen.

@snowflake-security-bot snowflake-security-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Snowflake Security Review

Security grade: A — Passed

This PR was classified as LOW risk by the automated pre-screen.

@sfc-gh-fpawlowski
sfc-gh-fpawlowski force-pushed the SNOW-2912540-ud-reporting branch from 3b135a2 to 1fddef5 Compare August 24, 2026 02:55

@snowflake-security-bot snowflake-security-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Snowflake Security Review

Security grade: A — Passed

This PR was classified as LOW risk by the automated pre-screen.

@snowflake-security-bot snowflake-security-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Snowflake Security Review

Security grade: A — Passed

This PR was classified as LOW risk by the automated pre-screen.

Previous 5-group attempt on this branch accumulated a lot of ad-hoc
debugging hacks (checkout-target flip-flopping, dead-token additions,
manual git-fetch detours) while chasing what turned out to be a red
herring. Reverting those left the branch back at its original 2-group
form -- losing the intended 5-group scope in the process.

This rebuilds cleanly from ud-ci-workflow-auto-triggered-full-improvements
(unit-integ/scala/modin/datasource/doctest), using the already-proven
patch from snowpark-ud-job-testing (scripts/patch_new_workflow_for_verification.py
+ verify_ud_snippet.py) for the install-hardening + UD-verification logic,
instead of reinventing it. repository: snowflakedb/universal-driver is
left untouched from the source -- this is the repo snowpark-ud-job-testing
has reliably dispatched against for weeks (see its JOBS.md history), unlike
snowflakedb/drivers which had persistent, never-fully-root-caused
actions/checkout fetch failures earlier this session.

Only change beyond the source: dropped the concurrency block (confirmed
none of odbc-reports' other UD-dispatch sibling jobs use one either -- see
commit history for the concurrency-collision risk this avoids).
@sfc-gh-fpawlowski
sfc-gh-fpawlowski force-pushed the SNOW-2912540-ud-reporting branch from 1fddef5 to 8a0ba9d Compare August 24, 2026 03:17

@snowflake-security-bot snowflake-security-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Snowflake Security Review

Security grade: A — Passed

This PR was classified as LOW risk by the automated pre-screen.

@snowflake-security-bot snowflake-security-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Snowflake Security Review

Security grade: A — Passed

This PR was classified as LOW risk by the automated pre-screen.

.tox/"$TOX"/bin/pip install --force-reinstall --no-deps "${ud_connector_path}"
echo "reinstall exit code: $?"
elif [ -n "${snowflake_path}" ]; then
.tox/"$TOX"/bin/pip install --force-reinstall --no-deps ${snowflake_path}/snowflake_connector_python*.whl

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.

Missing quotes around ${snowflake_path} variable. This will cause word splitting and glob expansion if the path contains spaces or special characters.

# Current (broken):
.tox/"$TOX"/bin/pip install --force-reinstall --no-deps ${snowflake_path}/snowflake_connector_python*.whl

# Fixed:
.tox/"$TOX"/bin/pip install --force-reinstall --no-deps "${snowflake_path}"/snowflake_connector_python*.whl

This is inconsistent with line 221 which correctly quotes "${ud_connector_path}".

Suggested change
.tox/"$TOX"/bin/pip install --force-reinstall --no-deps ${snowflake_path}/snowflake_connector_python*.whl
.tox/"$TOX"/bin/pip install --force-reinstall --no-deps "${snowflake_path}"/snowflake_connector_python*.whl

Spotted by Graphite

Fix in Graphite


Is this helpful? React 👍 or 👎 to let us know.

@sfc-gh-fpawlowski
sfc-gh-fpawlowski marked this pull request as draft August 24, 2026 03:24
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.

1 participant