grpc
grpc copied to clipboard
Bump dependencies due to incompatibility with rabbit_common
Problem
I am currently building a small service that consumes realtime data updates from Salesforce (GRPC Stream) and should forward them into a RabbitMQ Cluster.
However, the dependencies are incompatible.
I have difficulties parsing what exactly the mismatch is here - I think the allowed version ranges for ranch do not match (see below).
Describe the solution you'd like
grpc using newer dependency versions to be compatible with rabbit_common.
Describe alternatives you've considered
Not sure there is one.
Downgrading the Erlang/OTP version might be possible, but I'd like to stay up-to-date.
Can I use mint instead of gun?
Additional context
Because gun >= 2.0.1 and < 2.1.0 depends on cowlib 2.12.1 and gun >= 2.0.0 and < 2.0.1 depends on cowlib 2.12.0, gun >= 2.0.0 and < 2.1.0 requires cowlib 2.12.0 or 2.12.1. And because gun >= 2.1.0 depends on cowlib 2.13.0, gun >= 2.0.0 requires cowlib 2.12.0 or 2.12.1 or 2.13.0. And because grpc >= 0.6.0 depends on gun ~> 2.0, grpc >= 0.6.0 requires cowlib 2.12.0 or 2.12.1 or 2.13.0. And because cowboy >= 2.13.0 depends on cowlib >= 2.14.0 and < 3.0.0, grpc >= 0.6.0 is incompatible with cowboy >= 2.13.0. And because grpc >= 0.6.0 depends on cowboy ~> 2.10, grpc >= 0.6.0 requires cowboy >= 2.10.0 and < 2.13.0. And because cowboy >= 2.9.0 and < 2.13.0 depends on ranch 1.8.0, grpc >= 0.6.0 requires ranch 1.8.0. And because rabbit_common >= 3.13.2-rc.1 depends on ranch 2.1.0, grpc >= 0.6.0 is incompatible with rabbit_common >= 3.13.2-rc.1. And because your app depends on grpc ~> 0.9, rabbit_common >= 3.13.2-rc.1 is forbidden. So, because your app depends on rabbit_common ~> 3.13.7, version solving failed.
I think this is related to https://github.com/ninenines/cowboy/issues/1591
The author of the libs (cowboy, ranch, cowlib) used a version requirement that was a lot more strict than what mix can work around.
You can try locally setting {:cowboy, "~> 2.13", override: true} to see if this solves everything. If so, feel free to submit a pull request updating our mix.exs/mix.lock (and the examples folders too)
Thanks for the quick reply.
Bumping
{:cowlib, "~> 2.14", override: true},
within my mix project seems to work so far - I am still getting real time data from Salesforce.
I'll get back on this tomorrow.