[ 
https://issues.apache.org/jira/browse/SPARK-58983?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Hyukjin Kwon updated SPARK-58983:
---------------------------------
    Epic Link:   (was: SPARK-59035)

> [spark-connect-rust] Fix CI so all workflows run and pass
> ---------------------------------------------------------
>
>                 Key: SPARK-58983
>                 URL: https://issues.apache.org/jira/browse/SPARK-58983
>             Project: Spark
>          Issue Type: Bug
>          Components: Project Infra
>    Affects Versions: connect-rust-0.1.0
>            Reporter: Hyukjin Kwon
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: connect-rust-4.2.0
>
>
> All GitHub Actions workflows on apache/spark-connect-rust failed with 
> "startup_failure"
> ("This run likely failed because of a workflow file issue") on pushes to 
> master and on
> pull requests, so there was effectively no CI. Fixing that surfaced several 
> genuine
> build/test failures that the default build never exercised. This issue tracks 
> getting CI
> to both run *and* pass.
> h2. Root cause of startup_failure
> The ASF org restricts GitHub Actions to actions/* plus a vetted allowlist; 
> the workflows
> referenced non-allowlisted third-party actions 
> (actions-rust-lang/setup-rust-toolchain,
> dtolnay/rust-toolchain, arduino/setup-protoc, PyO3/maturin-action,
> pypa/gh-action-pypi-publish), so the runs failed to start.
> h2. Fixes
> * Replace all non-allowlisted actions with GitHub-authored actions 
> (actions/checkout,
>   actions/setup-python, actions/setup-java, actions/cache, 
> actions/upload-artifact,
>   actions/download-artifact) plus shell steps (rustup for the toolchain, 
> apt/brew/choco
>   for protoc, pip for maturin/twine).
> * Fix a pre-existing crate-name bug in build_python_connect.yml's rust-checks 
> job, which
>   ran {{cargo test -p spark-connect -p spark-connect-core}} using the old 
> crate names
>   (renamed to apache-spark-connect / apache-spark-connect-core).
> * Fix a wasm-udf compile error: a unit test named parse_python_version_output 
> shadowed the
>   module function of the same name (via {{use super::*}}); rename the test.
> * Run the WASM packer against the reference pyspark: isolate pyspark_wasm_udf 
> on the packer
>   import path so {{pyspark.cloudpickle}} and 
> {{pyspark.sql.types._parse_datatype_json_value}}
>   resolve to the reference pyspark. The Rust-backed pyspark skin lacks them 
> and cannot emit
>   an executor-compatible DataType.
> * Bump the transitive dependency ethnum 1.5.0 -> 1.5.3: 1.5.0 does
>   {{mem::transmute::<(), TryFromIntError>(())}}, which no longer compiles now 
> that std's
>   TryFromIntError is not zero-sized (E0512).
> * Move the example crates and datasets under examples/ and update the 
> workflow paths.
> * Fix a transport-injection stub hang that timed out the Connect parity gate 
> on test_client.py: test_server_unreachable (client to unresolvable sc://foo 
> with max_retries=0) expected a prompt UNAVAILABLE, but our RustConnectStub 
> ran RPCs through the Rust client's with_retry using RetryPolicy::default() 
> (15 retries, backoff to 64s). The injection stub is a drop-in for the 
> single-shot grpcio stub over which the reference client layers its own retry 
> handler, so retrying inside our client double-retried and ignored the client 
> policy (~700s hang). Add RetryPolicy::no_retries() and set it on the 
> injection stub (single-shot; reference client owns retrying), and bound 
> grpc.ready()/add connect_timeout so an unreachable channel surfaces 
> UNAVAILABLE instead of hanging. test_client.py now passes 41/41 through our 
> transport.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to