Conversation
michael-o
left a comment
There was a problem hiding this comment.
Those verbose boolean properties are wrong. They are an antipattern to log levels. That should go to DEBUG.
I will run the code as-is against our Core ITs first.
|
It does not cause at least any failures in Core ITs... |
...solver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/ConflictWinnerFinder.java
Outdated
Show resolved
Hide resolved
...solver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/ConflictWinnerFinder.java
Outdated
Show resolved
Hide resolved
...solver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/ConflictWinnerFinder.java
Outdated
Show resolved
Hide resolved
...solver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/ConflictWinnerFinder.java
Outdated
Show resolved
Hide resolved
...-impl/src/main/java/org/eclipse/aether/internal/impl/collect/DefaultDependencyCollector.java
Outdated
Show resolved
Hide resolved
...-impl/src/main/java/org/eclipse/aether/internal/impl/collect/DefaultDependencyCollector.java
Outdated
Show resolved
Hide resolved
|
Kudos, cool work! |
|
@caiwei-ebay @michael-o took the liberty to create a draft as I had quite a few remarks #137 Most important IMHO is to keep the logic flow "clean" -- so either use reconciler or not use, passing in boolean to "enable" it, and then have all method to some no-op is IMHO wrong. Just create reconciler when used, otherwise do not. |
|
Integrated the changes from #137 to this PR and do a bit refactoring. Thanks! |
|
@michael-o @cstamas |
I am still reviewing another open PR, then I can come to your one. Don't expect any huge traction in the next 10 days. |
|
Squashed the commits. Simplified the algorithm a lot. Compared with previous approach:
The overall idea is:
Skip: Skip resolving the node if a node with the same GAV and lower (or equal) depth has been calculated before. Here
With skip step only, the "mvn dependency:tree -Dverbose" is already guaranteed to be identical, however the "mvn dependency:tree" or "mvn dependency:list" result might be impacted as there would be dependency conflicts. At the very first, I just implemented the Skip strategy and tested with 500+ apps, 99%+ apps were having identical "mvn dependency:tree" or "mvn dependency:list" result, only 4 apps failed as there are dependency version conflicts. This is why we need the reconcile strategy as below. Reconcile (Transform rehearsal):
Sample:
Here is the flow:
|
|
pls incorporate latest master changes (whether rebase+squash+force push or just merge) |
|
@cstamas As discussed in MRESOLVER-228, we will send multiple PRs following below sequence:
Closed this PR. |
|
Resolve #1407 |
1 similar comment
|
Resolve #1407 |
No description provided.