Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backporting prost/tonic upgrade to 6.x line #945

Closed

Conversation

alamb
Copy link
Contributor

@alamb alamb commented Nov 11, 2021

Which issue does this PR close?

N/A (related to #897 )

Rationale for this change

Various downstream projects such as IOx would like to upgrade to the latest version of prost / tonic, etc (0.9 and 0.6 respectively at the time of writing). However, we have avoided such potentially incompatible version upgrades in the past.

However, in consultation with @shepmaster and others, there are cases when upgrading dependencies even to new "semver incompatible" versions may not actually break sematic versioning

What changes are included in this PR?

cherry-pick 1d3d5e3 which originally appeared in #864 from @PsiACE to active_relaese (aka propose to include in the arrow 6.2.0 release). I will then use this branch to see what effects it has on datafusion and others.

Are there any user-facing changes?

Versions of prost and tonic are upated

* Bump deps

Signed-off-by: Chojan Shang <[email protected]>

* Setup lastest cargo-tarpaulin

Signed-off-by: Chojan Shang <[email protected]>

* Try to use the lastest cargo

Signed-off-by: Chojan Shang <[email protected]>

Co-authored-by: Andrew Lamb <[email protected]>
@alamb alamb changed the title Test of backporting prost/tonic upgrade to 6.x line Backporting prost/tonic upgrade to 6.x line Nov 11, 2021
@github-actions github-actions bot added the arrow-flight Changes to the arrow-flight crate label Nov 11, 2021
@alamb
Copy link
Contributor Author

alamb commented Nov 11, 2021

PR for upgrading datafusion to point at this branch: apache/datafusion#1283

@alamb
Copy link
Contributor Author

alamb commented Nov 11, 2021

Unfortunately it fails to build with something like

   Compiling datafusion v5.1.0 (/Users/alamb/Software/arrow-datafusion/datafusion)
error[E0308]: mismatched types
  --> ballista/rust/core/src/client.rs:75:19
   |
75 |         Ok(Self { flight_client })
   |                   ^^^^^^^^^^^^^ expected struct `Channel`, found struct `tonic::transport::channel::Channel`
   |
   = note: expected struct `FlightServiceClient<Channel>`
              found struct `FlightServiceClient<tonic::transport::channel::Channel>`
   = note: perhaps two different versions of crate `tonic` are being used?

error[E0599]: the method `do_get` exists for struct `FlightServiceClient<Channel>`, but its trait bounds were not satisfied
   --> ballista/rust/core/src/client.rs:112:14
    |
112 |             .do_get(request)
    |              ^^^^^^ method cannot be called on `FlightServiceClient<Channel>` due to unsatisfied trait bounds
    |
   ::: /Users/alamb/.cargo/registry/src/github.com-1ecc6299db9ec823/tonic-0.5.2/src/transport/channel/mod.rs:68:1
    |
68  | pub struct Channel {
    | ------------------
    | |
    | doesn't satisfy `<_ as Service<tonic::codegen::http::Request<http_body::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>>::Response = tonic::codegen::http::Response<_>`
    | doesn't satisfy `_: Service<tonic::codegen::http::Request<http_body::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>`
    | doesn't satisfy `_: tonic::client::service::GrpcService<http_body::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>`
    |
    = note: the following trait bounds were not satisfied:
            `Channel: tonic::client::service::GrpcService<http_body::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>`
            `<Channel as Service<tonic::codegen::http::Request<http_body::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>>::Response = tonic::codegen::http::Response<_>`
            `Channel: Service<tonic::codegen::http::Request<http_body::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>`

@alamb
Copy link
Contributor Author

alamb commented Nov 12, 2021

The conclusion is that updating prost/tonic is definitely not backwards compatible. Closing this one

@alamb alamb closed this Nov 12, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
arrow-flight Changes to the arrow-flight crate
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant