DB Tsai created SPARK-61215:
-------------------------------

             Summary: Match streaming listener parsing and failure handling in 
Spark Connect Rust
                 Key: SPARK-61215
                 URL: https://issues.apache.org/jira/browse/SPARK-61215
             Project: Spark
          Issue Type: Bug
          Components: Connect
    Affects Versions: connect-rust-4.3.0
            Reporter: DB Tsai


Malformed streaming listener events can disappear or leave registrations 
active, and terminal transport failures can clear listeners without PySpark's 
handler warning.

Propagate synchronous start-event decoding errors from start() and toTable(), 
including with no registered listeners. Decode each asynchronous event once and 
share it across all registrations; report transport, malformed-event and 
unknown-event failures once before clearing the affected subscription. 
Per-listener Exception warnings continue dispatch. Native Rust listeners retain 
a silent default error hook and can override it. Callbacks and warning hooks 
hold no listener-bus state lock; concurrent non-last removal waits through 
event/error notification.

The independent patch is based on master 
925dc876f63f1f779fe176f62575a0aa96cc6886 and preserves its existing lifecycle 
and generation-scoped removal semantics.

Executed validation: formatting, release library tests, integration-test 
compilation with and without wasm-udf, extension build, 2605 Python passes with 
8 inherited live-server skips, all 53 required listener cases and five new 
native unit tests. The current source carries that execution through exactly 
three comment-only replacements. Fresh strict validation on the current 
artifact passed 25 distinct Python cases once each (75 passing 
setup/call/teardown reports) plus three selected native error regression unit 
cases. Live Spark validation passed 7 native Python cases with no skips and all 
three native streaming e2e callers with 1 passed / 0 ignored each. The live 
selection deselected 194 other cases and used staging-harness provenance.

The 12-group API public-name and Row tuple/name gates and no-stubs audit 
passed. Rustdoc exited 0 with two inherited types.rs warnings (unresolved 
from_json link and unclosed int tag). Workspace/all-target Clippy exited 101; 
all 472 source diagnostics and 721 spans map to unchanged saved-master 
statements and preserved current statements. Complete source review round 12 
reported no findings. These results are scoped and do not establish full 
API/client parity or certify the README's broad parity statement.

Retain the documented limits: normal EOF silently clears registrations; 
uncaught asynchronous BaseException or warning-as-error clears registrations, 
with best-effort terminal warning; local stop()/close() cancels and clears 
without removal RPCs or joining active callbacks. A listener can retain its 
session through listener.spark; initial RPC establishment retains transport 
deadlines/retries. The inherited single-generation dispatch-marker boundary is 
unchanged.

This artifact's official configuration and DataFrame-creation modules ran 
through its raw-transport plugin against a live JVM: 23 passed, 1 skipped and 
no failures/errors. Its current source, saved extension and reviewed source 
match.

Assessed common transport regression evidence is carried from a separate pandas 
artifact with all 53 shared transport/build/dependency inputs equal. The 
donor's full ordinary phase covered 87 modules: 2586 passed, 641 skipped, 1 
manifest deselection and one expected missing-catalog drift-check failure, with 
no unexpected failures. Its separate cluster/resource phase covered 4 modules: 
15 passed and 14 skipped (10 functional passes and 5 guard passes). Only the 
donor executed the full phases; this streaming artifact independently executed 
the plugin smoke and native checks described above.

Saved harness/source/artifact/endpoint evidence is retained, but complete 
official/dependency whole-tree start/end attestations, per-case skip provenance 
and raw per-module pytest exit codes were not all recorded. Totals count test 
executions; no whole-client parity claim is made.

This pull request and its description were written by OpenAI Codex.




--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

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

Reply via email to