andygrove commented on issue #2367:
URL: 
https://github.com/apache/datafusion-ballista/issues/2367#issuecomment-5414091061

   Thanks for the detailed report @martin-g. I spent some time on this and I 
can't reproduce it yet, so I could use a few details about your setup.
   
   Here is what I tried. Cluster built from `apache/main` (`ee25f53`, three 
commits ahead of your `50d7322`, none of them relevant here), TPC-H SF1 parquet 
from `tpchgen-cli`, one scheduler and one executor with the default temp work 
dir like yours. I ran your `tpch.py` with the PyPI `ballista` 54.0.0 wheel and 
the 54.1.0 wheel, all 22 queries plus q1 twenty five times in a row, and also 
tried two executors, 8 vcores vs 28, and an explicit `--work-dir`. Everything 
passed.
   
   The interesting part is the filename in your error. You are asking for 
`.../{job}/3/0/data.arrow`, but on current `main` the final stage writes 
`.../{job}/3/0/data-{task_id}.arrow`. That naming changed after 54.0.0. The 
passthrough `ShuffleWriterExec` used to report `file_id: None` and write 
`data.arrow`, and now it reports `file_id: Some(task_id)` and writes 
`data-{task_id}.arrow`. I checked every `file_id: None` construction site on 
`main` and they are all inside `#[cfg(test)]`, so no current code path should 
ever produce a request for the un-suffixed name. That points at something in 
your setup running the older layout.
   
   So, could you check a few things?
   
   1. `pip show ballista` in the environment you ran `tpch.py` from. Also 
whether that is the PyPI wheel or a local `maturin` build. If you built it 
locally with the path dependencies in `python/Cargo.toml` uncommented, that 
puts you on a different code path than the wheel and I would like to try that 
combination.
   2. How you built and launched the scheduler and executor, and whether 
**both** binaries were rebuilt at `50d7322`. A leftover 54.0.0 executor binary 
is my leading suspicion right now.
   3. The scheduler and executor logs for job `0381QN35XP000` if you still have 
them.
   4. Whether it fails every time, or only sometimes.
   
   One thing I noticed along the way that may or may not be related: the PyPI 
Python client pins `ballista* = "=54.0.0"` from crates.io, and 54.0.0 defaults 
`ballista.planner.adaptive.enabled` to `false`. Since `BallistaConfig` ships 
every setting including defaults, the scheduler receives an explicit `false` 
and uses the static planner, even though `main` now defaults that to `true`. So 
the Python client and the Rust client are exercising different planners against 
the same cluster. I filed #2371 for that, plus #2370 for adding a client side 
protocol version check so a mismatch like this fails with a clear message 
instead of a confusing missing file, and #2372 for the CI gap that let both 
slip through.
   


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