andygrove opened a new issue, #2372:
URL: https://github.com/apache/datafusion-ballista/issues/2372

   **Is your feature request related to a problem or challenge? Please describe 
what you are trying to do.**
   
   The Python client is effectively untested against the code we are changing. 
There is a pytest job, but two things keep it from covering Rust changes:
   
   1. **It almost never runs.** `.github/workflows/build.yml` ("Python Release 
Build") triggers on `pull_request` with `paths: ["python/**"]`, plus `*-rc*` 
tags. Any PR touching `ballista/core`, `ballista/scheduler`, or 
`ballista/executor` skips it entirely.
   
   2. **When it does run, it does not test the working tree.** 
`python/Cargo.toml` pins `ballista* = "=54.0.0"` from crates.io with the path 
dependencies commented out, so `uv run pytest` exercises the last release, not 
the branch.
   
   The tests themselves are reasonable (`python/python/tests/test_context.py` 
spins up a cluster via `setup_test_cluster` and runs real queries over 
`df://`), so the coverage exists, it just never sees current code.
   
   This bit us twice recently, both found while investigating #2367:
   
   - The final-stage shuffle file layout changed after 54.0.0 (`data.arrow` to 
`data-{task_id}.arrow`) with no Python-side check.
   - #2315 flipped the adaptive planner default, and the Python client silently 
keeps the old value, so Python users get a different planner than Rust users 
(see <ISSUE2>).
   
   **Describe the solution you'd like**
   
   - Run the Python tests on changes to `ballista/**` as well as `python/**`.
   - Add a CI job that builds the bindings against the **working tree** (path 
dependencies rather than the crates.io pin) and runs the existing pytest suite 
against a scheduler and executor built from the same commit. That is the 
combination that would have caught both regressions above.
   - Keep the existing crates.io-pinned job for release verification, since 
that is what actually ships.
   
   Ideally also run a small end-to-end query through the Python client 
(something with a shuffle boundary, so the final-stage fetch path is exercised) 
rather than only smoke tests.
   
   **Describe alternatives you've considered**
   
   Switching `python/Cargo.toml` to path dependencies permanently. That breaks 
the release build, which needs to build from published crates, so a separate CI 
job that swaps the dependencies in is the safer shape.
   
   **Additional context**
   
   Related: #2367, <ISSUE2>, and the client version handshake in <ISSUE1>.
   


-- 
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]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to