shahar1 opened a new pull request, #74132:
URL: https://github.com/apache/airflow/pull/74132

   The lowest-direct-dependency tests for the IBM MQ provider fail 
intermittently, for example:
   
   ```
   ERROR: all download attempts failed for 
https://public.dhe.ibm.com/.../9.4.0.0-IBM-MQC-Redist-LinuxX64.tar.gz; last 
error: <urlopen error [Errno 110] Connection timed out>
   Pre-extras install failed for ibm.mq
   ```
   
   The `ibmmq>=2.0.6` floor made `uv sync --resolution lowest-direct 
--all-extras` pick ibmmq 2.0.6. On PyPI, 2.0.0–2.0.6 are sdist-only, and 
building them needs the IBM MQ C client. That is why the provider downloaded 
the IBM MQ redistributable from `public.dhe.ibm.com` before syncing, and the 
job failed whenever that host did not answer from the runner. ibmmq 2.1.0 is 
the first release with a `manylinux_2_28_x86_64` wheel. Raising the floor to it 
removes the build, so it also removes the download, the 
`pre_extras_install.yaml` manifest and the provider's pre-extras registration. 
The generic pre-extras mechanism stays in place for future providers.
   
   The wheel's extension still links `libmqm_r.so` at runtime, so `import 
ibmmq` raises `ImportError` when the client is not installed. The test conftest 
used to check `find_spec`, which passes once the wheel is installed. It now 
falls back to the fake module whenever the import fails.
   
   Tradeoff: before this change, the lowest-dependency job could run the tests 
against a real ibmmq built against the downloaded client. The regular CI image 
never installs the `ibmmq` extra, so now every CI job runs these tests against 
the fake module. That seems the right trade for removing an unreliable external 
download from CI.
   
   related: #71544, which keeps the download but adds timeouts and retries. 
This change removes the need for the download.
   
   Checks run:
   - In Breeze, with `MQ_FILE_PATH` unset and no download, the lowest-direct 
sync installed `ibmmq==2.1.0` from the wheel. Provider tests then passed, apart 
from `airflow_shared` import errors caused by skipping the entrypoint's 
`reinstall_shared_distributions` step in the ad-hoc run.
   - In the regular Breeze container, all 105 provider tests pass.
   - `prek run --stage pre-commit` passes.
   
   ---
   
   ##### Was generative AI tooling used to co-author this PR?
   
   - [X] Yes — Claude Code (Opus 5.5)
   
   Generated-by: Claude Code (Opus 5.5) following [the 
guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions)
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to