[ https://issues.apache.org/jira/browse/MNG-8711?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17948209#comment-17948209 ]
Vasilii Gulevich edited comment on MNG-8711 at 4/29/25 9:16 PM: ---------------------------------------------------------------- To ensure that the problem is indeed fixed, I came up with a following test (to be pasted in impl/maven-core/src/test/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolverTest.java): {code:java} @Test void testResolutionWithoutFiltering() throws Exception { MavenSession session = createMavenSession( new File("src/test/projects/lifecycle-dependency-resolver/pom.xml"), new Properties(), true); Collection<String> scopesToCollect = null; Collection<String> scopesToResolve = Collections.singletonList("compile"); boolean aggregating = false; for (MavenProject reactorProject : session.getProjects()) { reactorProject.setArtifactFilter(artifact -> true); resolver.resolveProjectDependencies( reactorProject, scopesToCollect, scopesToResolve, session, aggregating, Collections.emptySet()); // unexpectedly throws } } {code} Notice that last argument is empty, just like it would be in org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved(MojoDescriptor, MavenSession, DependencyContext) The test fails with: {code:java} [ERROR] org.apache.maven.lifecycle.internal.LifecycleDependencyResolverTest.testResolutionWithoutFiltering -- Time elapsed: 0.032 s <<< ERROR! org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project mng6300-war: Could not resolve dependencies for project org.apache.maven.its.mng6300:mng6300-war:war:1.0 dependency: org.apache.maven.its.mng6300:mng6300-lib:jar:1.0 (compile) Could not find artifact org.apache.maven.its.mng6300:mng6300-lib:jar:1.0 in central (file:///Users/vasiligulevich/git/maven/impl/maven-core/src/test/remote-repo/) at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:279) at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectArtifacts(LifecycleDependencyResolver.java:208) at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies(LifecycleDependencyResolver.java:128) at org.apache.maven.lifecycle.internal.LifecycleDependencyResolverTest.testResolutionWithoutFiltering(LifecycleDependencyResolverTest.java:148) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at java.base/java.util.ArrayList.forEach(ArrayList.java:1597) at java.base/java.util.ArrayList.forEach(ArrayList.java:1597) Caused by: org.apache.maven.project.DependencyResolutionException: Could not resolve dependencies for project org.apache.maven.its.mng6300:mng6300-war:war:1.0 dependency: org.apache.maven.its.mng6300:mng6300-lib:jar:1.0 (compile) Could not find artifact org.apache.maven.its.mng6300:mng6300-lib:jar:1.0 in central (file:///Users/vasiligulevich/git/maven/impl/maven-core/src/test/remote-repo/) at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:191) at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:260) ... 6 more Caused by: org.eclipse.aether.resolution.DependencyResolutionException: The following artifacts could not be resolved: org.apache.maven.its.mng6300:mng6300-lib:jar:1.0 (absent): Could not find artifac t org.apache.maven.its.mng6300:mng6300-lib:jar:1.0 in central (file:///Users/vasiligulevich/git/maven/impl/maven-core/src/test/remote-repo/) at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:312) at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:186) ... 7 more Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: The following artifacts could not be resolved: org.apache.maven.its.mng6300:mng6300-lib:jar:1.0 (absent): Could not find artifact org.apache.maven.its.mng6300:mng6300-lib:jar:1.0 in central (file:///Users/vasiligulevich/git/maven/impl/maven-core/src/test/remote-repo/) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:424) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:201) at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:299) ... 8 more Suppressed: org.eclipse.aether.resolution.ArtifactResolutionException: Failed to resolve artifact org.apache.maven.its.mng6300:mng6300-lib:jar:1.0 at org.eclipse.aether.resolution.ArtifactResolutionException.getSuppressed(ArtifactResolutionException.java:185) at org.eclipse.aether.resolution.ArtifactResolutionException.<init>(ArtifactResolutionException.java:47) ... 11 more Suppressed: org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact org.apache.maven.its.mng6300:mng6300-lib:jar:1.0 in central (file:///Users/vasiligulevich/git/maven/impl/ma ven-core/src/test/remote-repo/) at org.apache.maven.repository.TestRepositoryConnector.get(TestRepositoryConnector.java:83) at org.eclipse.aether.internal.impl.offline.OfflineRepositoryConnector.get(OfflineRepositoryConnector.java:82) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:490) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:399) ... 10 more Caused by: [CIRCULAR REFERENCE: org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact org.apache.maven.its.mng6300:mng6300-lib:jar:1.0 in central (file:///Users/vasiligulevich /git/maven/impl/maven-core/src/test/remote-repo/)]{code} This failure indicates that the fix in itself is not enough to eliminate the race of artifact resolution. There are might be some different protections in place, but it will take time to ensure they are present and tested. So far, I'm not confident enough to proceed with backport by myself. was (Author: JIRAUSER309537): To ensure that the problem is indeed fixed, I came up with a following test (to be pasted in impl/maven-core/src/test/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolverTest.java): {code:java} @Test void testResolutionWithoutFiltering() throws Exception { MavenSession session = createMavenSession( new File("src/test/projects/lifecycle-dependency-resolver/pom.xml"), new Properties(), true); Collection<String> scopesToCollect = null; Collection<String> scopesToResolve = Collections.singletonList("compile"); boolean aggregating = false; for (MavenProject reactorProject : session.getProjects()) { reactorProject.setArtifactFilter(artifact -> true); resolver.resolveProjectDependencies( reactorProject, scopesToCollect, scopesToResolve, session, aggregating, Collections.emptySet()); // unexpectedly throws } } {code} Notice that last argument is a set of visited artifacts emulating an obsolete state of a different thread. The test fails with: {code:java} [ERROR] org.apache.maven.lifecycle.internal.LifecycleDependencyResolverTest.testResolutionWithoutFiltering -- Time elapsed: 0.032 s <<< ERROR! org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project mng6300-war: Could not resolve dependencies for project org.apache.maven.its.mng6300:mng6300-war:war:1.0 dependency: org.apache.maven.its.mng6300:mng6300-lib:jar:1.0 (compile) Could not find artifact org.apache.maven.its.mng6300:mng6300-lib:jar:1.0 in central (file:///Users/vasiligulevich/git/maven/impl/maven-core/src/test/remote-repo/) at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:279) at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectArtifacts(LifecycleDependencyResolver.java:208) at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies(LifecycleDependencyResolver.java:128) at org.apache.maven.lifecycle.internal.LifecycleDependencyResolverTest.testResolutionWithoutFiltering(LifecycleDependencyResolverTest.java:148) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at java.base/java.util.ArrayList.forEach(ArrayList.java:1597) at java.base/java.util.ArrayList.forEach(ArrayList.java:1597) Caused by: org.apache.maven.project.DependencyResolutionException: Could not resolve dependencies for project org.apache.maven.its.mng6300:mng6300-war:war:1.0 dependency: org.apache.maven.its.mng6300:mng6300-lib:jar:1.0 (compile) Could not find artifact org.apache.maven.its.mng6300:mng6300-lib:jar:1.0 in central (file:///Users/vasiligulevich/git/maven/impl/maven-core/src/test/remote-repo/) at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:191) at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:260) ... 6 more Caused by: org.eclipse.aether.resolution.DependencyResolutionException: The following artifacts could not be resolved: org.apache.maven.its.mng6300:mng6300-lib:jar:1.0 (absent): Could not find artifac t org.apache.maven.its.mng6300:mng6300-lib:jar:1.0 in central (file:///Users/vasiligulevich/git/maven/impl/maven-core/src/test/remote-repo/) at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:312) at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:186) ... 7 more Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: The following artifacts could not be resolved: org.apache.maven.its.mng6300:mng6300-lib:jar:1.0 (absent): Could not find artifact org.apache.maven.its.mng6300:mng6300-lib:jar:1.0 in central (file:///Users/vasiligulevich/git/maven/impl/maven-core/src/test/remote-repo/) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:424) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:201) at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:299) ... 8 more Suppressed: org.eclipse.aether.resolution.ArtifactResolutionException: Failed to resolve artifact org.apache.maven.its.mng6300:mng6300-lib:jar:1.0 at org.eclipse.aether.resolution.ArtifactResolutionException.getSuppressed(ArtifactResolutionException.java:185) at org.eclipse.aether.resolution.ArtifactResolutionException.<init>(ArtifactResolutionException.java:47) ... 11 more Suppressed: org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact org.apache.maven.its.mng6300:mng6300-lib:jar:1.0 in central (file:///Users/vasiligulevich/git/maven/impl/ma ven-core/src/test/remote-repo/) at org.apache.maven.repository.TestRepositoryConnector.get(TestRepositoryConnector.java:83) at org.eclipse.aether.internal.impl.offline.OfflineRepositoryConnector.get(OfflineRepositoryConnector.java:82) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:490) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:399) ... 10 more Caused by: [CIRCULAR REFERENCE: org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact org.apache.maven.its.mng6300:mng6300-lib:jar:1.0 in central (file:///Users/vasiligulevich /git/maven/impl/maven-core/src/test/remote-repo/)]{code} This failure indicates that the fix in itself is not enough to eliminate the race of artifact resolution. There are might be some different protections in place, but it will take time to ensure they are present and tested. So far, I'm not confident enough to proceed with backport by myself. > "Duplicate artifact" in LifecycleDependencyResolver > --------------------------------------------------- > > Key: MNG-8711 > URL: https://issues.apache.org/jira/browse/MNG-8711 > Project: Maven > Issue Type: Bug > Components: Core > Affects Versions: 3.9.9 > Reporter: Vasilii Gulevich > Priority: Major > Labels: backport > Fix For: 3.9.10 > > > When building a multimodule project with "--threads=10" argument, following > exception happens: > {code:java} > java.lang.IllegalStateException: Duplicate artifact resolution result for > project org.eclipse.rcptt:ecl:2.6.0-SNAPSHOT > at > org.apache.maven.project.artifact.DefaultProjectArtifactsCache.assertUniqueKey > (DefaultProjectArtifactsCache.java:207) > at org.apache.maven.project.artifact.DefaultProjectArtifactsCache.put > (DefaultProjectArtifactsCache.java:196) > at > org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies > (LifecycleDependencyResolver.java:138) > at > org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved > (MojoExecutor.java:368) > at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute > (MojoExecutor.java:313) > at org.apache.maven.lifecycle.internal.MojoExecutor.execute > (MojoExecutor.java:212) > at org.apache.maven.lifecycle.internal.MojoExecutor.execute > (MojoExecutor.java:174) > at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 > (MojoExecutor.java:75) > at org.apache.maven.lifecycle.internal.MojoExecutor$1.run > (MojoExecutor.java:162) > at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute > (DefaultMojosExecutionStrategy.java:39) > at org.apache.maven.lifecycle.internal.MojoExecutor.execute > (MojoExecutor.java:159) > at > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject > (LifecycleModuleBuilder.java:105) > at io.takari.maven.builder.smart.SmartBuilderImpl.buildProject > (SmartBuilderImpl.java:206) > at io.takari.maven.builder.smart.SmartBuilderImpl$ProjectBuildTask.run > (SmartBuilderImpl.java:71) > at java.util.concurrent.Executors$RunnableAdapter.call > (Executors.java:572) > at java.util.concurrent.FutureTask.run (FutureTask.java:317) > at java.util.concurrent.ThreadPoolExecutor.runWorker > (ThreadPoolExecutor.java:1144) > at java.util.concurrent.ThreadPoolExecutor$Worker.run > (ThreadPoolExecutor.java:642) > at java.lang.Thread.run (Thread.java:1583) {code} > This is already fixed in [https://github.com/apache/maven/pull/1425], but is > not backported to 3.9.x. > > -- This message was sent by Atlassian Jira (v8.20.10#820010)