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
cached resolution falsely evicts netty (spark + cassandra) #2046
Comments
Thanks for the report!
Could you run |
Here's the debug update output. There's this bit:
which is consistent with the dependencyOverrides workaround. But I don't see any real clues. Do you? |
Here's how we can get update report.
Netty
Netty 3.8.0.Final was evicted with the reason "latest-revision", which means there were newer version on the graph, and Netty 3.8.0.Final was evicted transitively when its caller This is in fact a bug in cached resolution since Netty 3.8.0.Final should have survived, because |
This fixes the minigraph stitching logic by first sorting the graph based on the level of inter-dependencies, and gradually resolving conflict from the leaves that do not depend on other libraries. For each eviction, transitive evictions are propagated right away to avoid double eviction observed in #2046 For the transitive eviction checking I needed to bring back the caller information, which is notorious for its size. I am stuffing all ModuleIDs into one ModuleID for the graph, and recovering them only during the merging process.
The generalization of bug:
|
Fixes #2046. Cached resolution: Fixes double eviction
Thanks eugene! Point me at instructions for how to run a locally built sbt? I'll try your On Fri, Jul 10, 2015 at 8:31 AM, eugene yokota notifications@github.com
|
I just released 0.13.9-RC2. Could you try and see if it fixes your issue? |
hi @eed3si9n - I tried 0.13.9-RC2 and the graph.json is smaller than before, but are still pretty large (max is ~130mb), if I completely remove the callers the graph.json files are roughly a tenth of the size. Forgive the dumb question, but would it be right to say that |
@edeustace wrote:
No. What this issue has uncovered is that I need to sort the dependency graph by the degree of dependency before resolving the conflicts. That sorting requires callers. The problem with Ivy is that it seems to include both the direct callers and transitive callers, which result to bloating of of the callers causing #1763. |
Thanks for the clarification. What issue number should I be tracking for further reduction of the bloat? |
@edeustace I've been using #1763 as the placeholder, but 0.13.9-RC2 should work with lila, so I've closed that one. If you want please file a new issue on this. |
@mighdoll Awesome. Thanks for confirming the fix! |
I ran into a failure with cached resolution, below is a minimized example. The bug doesn't occur with cachedResolution disabled.
Spark includes a dependency on netty-3.8.0.Final, and the cassandra driver includes a dependency on netty-handler-4.x. These two variants of netty don't conflict, and both need to be included. If cached resolution is enabled, however, the 3.8 version is incorrectly evicted.
A workaround is to force the version of the cassandra driver with dependencyOverrides. That doesn't change the version of the cassandra driver selected, but it avoids the bug.
A quick way to see the problem is to copy the following build.sbt, and then:
then comment out the dependency override and:
note that netty 3.8 isn't in on the list in the second case.
The text was updated successfully, but these errors were encountered: