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

Replace failOnVersionConflict() with custom requireUpperBoundDeps #8238

Merged
merged 6 commits into from
Jun 11, 2021

Conversation

ejona86
Copy link
Member

@ejona86 ejona86 commented Jun 4, 2021

failOnVersionConflict has never been good for us. It is equivalent to
Maven dependencyConvergence which we discourage our users to use because
it is too tempermental and creates version skew issues over time.
However, we had no real alternative for determining if our deps would be
misinterpeted by Maven.

failOnVersionConflict has been a constant drain and makes it really hard
to do seemingly-trivial upgrades. As evidenced by protobuf/build.gradle,
in this change, it also caused us to introduce a version downgrade.

This introduces our own custom requireUpperBoundDeps implementation so
that we can get back to simple dependency upgrades and increase our
confidence in a consistent dependency tree.


The main build.gradle is where the real changes are, but the rest would
have been easy to introduce an accidental bug/change.

CC @elharo

build.gradle Show resolved Hide resolved
build.gradle Show resolved Hide resolved
Copy link
Contributor

@voidzcy voidzcy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The buildscript change looks cool.

@ejona86
Copy link
Member Author

ejona86 commented Jun 7, 2021

I'm going to wait until #8243 is in to resolve the build failure. I'll end up adding a direct dependency on error-prone from grpc-netty; right now it is getting error-prone transitively from Guava.

failOnVersionConflict has never been good for us. It is equivalent to
Maven dependencyConvergence which we discourage our users to use because
it is too tempermental and _creates_ version skew issues over time.
However, we had no real alternative for determining if our deps would be
misinterpeted by Maven.

failOnVersionConflict has been a constant drain and makes it really hard
to do seemingly-trivial upgrades. As evidenced by protobuf/build.gradle
in this change, it also caused _us_ to introduce a version downgrade.

This introduces our own custom requireUpperBoundDeps implementation so
that we can get back to simple dependency upgrades _and_ increase our
confidence in a consistent dependency tree.
The changes didn't introduce a bug. It is just we previously excluded
and re-defined errorprone with guava such that it would be closer to the
root and ended up beating protobuf-java-util's dep.
@ejona86
Copy link
Member Author

ejona86 commented Jun 9, 2021

Looks like #8243 did indeed solve the build failure.

build.gradle Outdated Show resolved Hide resolved
@ejona86 ejona86 merged commit 5642e01 into grpc:master Jun 11, 2021
@ejona86 ejona86 deleted the requireUpperBoundDeps branch June 11, 2021 21:01
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Sep 10, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants