Search before asking
Description
fluss-rust/crates/fluss/build.rs reruns prost-build on every build, so a system protoc is required for every consumer of the fluss-rs crate and for the Rust CI, even though FlussApi.proto only changes when the wire protocol does. Vendoring the proto into published crates (scripts/vendor-proto.sh) ships the schema, but consumers still run the codegen, so the protoc requirement stays.
Downstream, the two Fluss connectors in flight for Apache Iggy (apache/iggy#3799, apache/iggy#3782) are blocked on exactly this.
Proposal: check the generated code in instead, following the arrow-flight layout — committed prost output, a small gen crate plus regen.sh for regeneration, and a proto-up-to-date CI job that regenerates and fails on any diff so the checked-in code cannot go stale.
Re-targeted from apache/fluss-rust#661 after the Rust client moved into this repository.
Willingness to contribute
Search before asking
Description
fluss-rust/crates/fluss/build.rsreruns prost-build on every build, so a system protoc is required for every consumer of thefluss-rscrate and for the Rust CI, even thoughFlussApi.protoonly changes when the wire protocol does. Vendoring the proto into published crates (scripts/vendor-proto.sh) ships the schema, but consumers still run the codegen, so the protoc requirement stays.Downstream, the two Fluss connectors in flight for Apache Iggy (apache/iggy#3799, apache/iggy#3782) are blocked on exactly this.
Proposal: check the generated code in instead, following the arrow-flight layout — committed prost output, a small
gencrate plusregen.shfor regeneration, and a proto-up-to-date CI job that regenerates and fails on any diff so the checked-in code cannot go stale.Re-targeted from apache/fluss-rust#661 after the Rust client moved into this repository.
Willingness to contribute