L. C. Hsieh created SPARK-59908:
-----------------------------------

             Summary: Sync the vendored Spark Connect protos to v4.2.0
                 Key: SPARK-59908
                 URL: https://issues.apache.org/jira/browse/SPARK-59908
             Project: Spark
          Issue Type: Sub-task
          Components: Connect
    Affects Versions: connect-gateway-0.1.0
            Reporter: L. C. Hsieh
            Assignee: L. C. Hsieh


SPARK-59856 recorded that the vendored Spark Connect protos were behind
upstream and added dev/sync-protos.sh, but deliberately left the drift in
place: re-syncing moves the protocol the gateway speaks, so it wanted its own
review. This does that sync.

  dev/sync-protos.sh --sync --ref v4.2.0

The result is +31 lines in relations.proto and +42 in pipelines.proto, with no
deletions -- the drift was one-directional, so closing it is purely additive:

  relations.proto   the NearestByJoin message, and its entry in the 
Relation.rel_type oneof (tag 47)
  pipelines.proto   the AutoCdcFlowDetails message, and the import of 
spark/connect/expressions.proto it needs

v4.2.0 was chosen because it is the newest released Spark tag. v4.3.0 exists
only as release candidates; syncing to an rc would pin the gateway to a
protocol that can still change before release. For reference, the tree is 4
files away from v4.3.0-rc1, so there will be another sync to make once 4.3.0
ships.

Verified beyond the build, because a compiling binding is weak evidence for a
protocol change:

  - The vendored files are byte-identical to upstream v4.2.0, all 11 of 11,
    compared file by file rather than trusting the script that wrote them.
  - cargo build -p scg-genproto regenerates the bindings, and the two new
    messages are present in the generated Rust as real structs -- not merely
    compiled past.
  - The new rel_type variant cannot break an exhaustive match: grepping the
    workspace outside crates/genproto for rel_type / RelType returns nothing.
    The one place that does inspect message contents,
    crates/proxy/src/config_filter.rs, matches on
    ConfigRequest.operation.op_type, which this change does not touch.
  - End to end against a real Spark backend on kind, deployed via the Helm
    chart: AnalyzePlan returns the correct schema for a range plan and
    ExecutePlan streams 15 response messages back, with the gateway's audit log
    confirming both RPCs passed through it. The client encoded its requests from
    the newly synced .proto files, which is what makes this a test of the sync
    rather than of the gateway alone -- and it confirms the v4.2.0 protocol
    remains compatible with a Spark 4.0 backend.
  - cargo test --workspace is 204 passed, 0 failed, 10 ignored, matching main;
    clippy --workspace --all-targets -D warnings and cargo fmt --check are 
clean.

proto/PROVENANCE.md is updated to match the new state. The revision is now
recorded as an exact match rather than a diff baseline, and the uncertainty the
old text carried -- that the previous copy came from an untagged 4.2
development commit that no release tag matched -- moves into a History section,
since it still documents where the original snapshot came from. The
explanation of why protocol drift degrades gracefully is kept, rewritten as
general guidance for judging how urgent a future sync is rather than as a
description of this particular gap. UPSTREAM_REF in dev/sync-protos.sh is
unchanged at v4.2.0; its comment is corrected, as it now names the revision the
files are at rather than one to diff against.



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