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

Fix inconsistent classpath ordering when dependencies have lots of excludes #9197

Merged
merged 2 commits into from Apr 24, 2019

Commits on Apr 23, 2019

  1. Use consistent ordering for module exclusions

    This commit updates the `MergeSet` implementation to extend
    from linked hashset instead of hashset, so that the order of
    elements is consistent. In theory, it shouldn't matter, but
    practice has shown that there must be a bug somewhere else
    that is at least partially mitigated by using consistent
    ordering here.
    
    In practice what it means is that it is possible to get
    inconsistent classpath ordering in multi-project builds
    depending on the order of resolution of projects, when
    those projects have lots of common exclusions in transitive
    dependencies. The considtion to reach this bug are unclear
    despite our efforts to find out, so this commit is really
    just a workaround at this point.
    melix committed Apr 23, 2019
    Copy the full SHA
    88dbb29 View commit details
    Browse the repository at this point in the history

Commits on Apr 24, 2019

  1. Clarifying renames

    The exclude rule merging algorithms are pretty hard to understand
    due to the mental shift required by weird definitions of "union"
    and "intersection" which are the exact opposite of what they should
    be.
    melix committed Apr 24, 2019
    Copy the full SHA
    f2093f2 View commit details
    Browse the repository at this point in the history