grpc icon indicating copy to clipboard operation
grpc copied to clipboard

Bump dependencies due to incompatibility with rabbit_common

Open larshei opened this issue 8 months ago • 2 comments
trafficstars

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.

larshei avatar Feb 25 '25 18:02 larshei

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)

polvalente avatar Feb 25 '25 19:02 polvalente

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.

larshei avatar Feb 25 '25 19:02 larshei