[ 
https://issues.apache.org/jira/browse/MNG-7758?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17854031#comment-17854031
 ] 

ASF GitHub Bot commented on MNG-7758:
-------------------------------------

cstamas commented on PR #1563:
URL: https://github.com/apache/maven/pull/1563#issuecomment-2160612679

   As I looked into, this is a problem that probably looks like this:
   Collector (CO, in resolver) -> ArtifactDescriptorReader (ADR, in maven) -> 
ArtifactResolver (AR, in resolver)
   
   What happens, is that CO during collecting, issues series of requests to ADR 
to build the graph, but ADR "forwards" these to AR (to resolve POM), and it 
fails.
   
   If you "rollback", you will see that AR throws ArtifactResolutionException 
that carries a list (repo, cause). So far all nice and dandy. But ADR loses 
them. Instead, it will create ArtifactDescriptorException w/o cause (so AR 
thrown ArtifactResolutionEx is lost), instead it uses result, and gets 1st 
exception from result as "cause". Finally, CO receives this exception and sets 
it as one single CollectionResult ex and throws DependencyCollectionException 
w/ result.
   
   The problem stems from here:
   
https://github.com/apache/maven-resolver/blob/master/maven-resolver-api/src/main/java/org/eclipse/aether/resolution/ArtifactDescriptorException.java#L35
   
   As ADR wants to reuse this message, but to do so, it simply leaves out cause 
(ArtifactResolutionEx), instead it does this: 
https://github.com/apache/maven-resolver/blob/master/maven-resolver-api/src/main/java/org/eclipse/aether/resolution/ArtifactDescriptorException.java#L76




> o.e.aether.resolution.ArtifactResolutionException incorrectly examined when 
> multiple repositories are involved
> --------------------------------------------------------------------------------------------------------------
>
>                 Key: MNG-7758
>                 URL: https://issues.apache.org/jira/browse/MNG-7758
>             Project: Maven
>          Issue Type: Bug
>          Components: Artifacts and Repositories, Dependencies, Performance
>    Affects Versions: 3.8.8, 3.9.1, 4.0.0-alpha-5
>            Reporter: Michael Osipov
>            Assignee: Slawomir Jaranowski
>            Priority: Critical
>             Fix For: 4.0.0, 3.9.8, 4.0.0-beta-4
>
>         Attachments: 1.png, 2.png, Exception hierarchy.png
>
>
> Consider you have three repos defined in your build (could be POM or 
> settings), evaluated in following order:
> 1. repo A: serves custom artifacts with group id {{com.example}}, due to repo 
> partitioning in Nexus rejects requests to all other group ids with 403
> 1. repo B: serves third party artifacts without any restriction from a Nexus 
> repo
> 1. repo C: serves Central mirror, last one quried, no restrictions
> Note that order is important! Now add a non-existing dependency to your  POM 
> and receive the following behavior:
> {{ArtifactResolutionException}} will contain an {{ArtifactResult}} with three 
> exceptions: 
>  - {{TransferException}} with nested {{AuthorizationException}}, 
>  - {{ArtifactNotFoundException}}, 
>  - {{ArtifactNotFoundException}}. 
> {{ArtifactResolutionException#getCause()}} will be populated with the 
> {{TransferException}} so will 
> {{org.eclipse.aether.resolution.ArtifactResult.isMissing()}} take the first 
> exception only into account. E.g., {{DefaultArtifactDescriptorReader}} will 
> do {{if (e.getCause() instanceof ArtifactNotFoundException)}} which is 
> deceiving.
> Here is a sample for a non-existing artifact:
> {noformat}
> [INFO] --- maven-site-plugin:4.0.0-M7-SNAPSHOT:site (default-site) @ 
> mskins-222 ---
> [INFO] Configuring report plugin 
> org.apache.maven.plugins:maven-project-info-reports-plugin:3.4.2
> [WARNING] index report is declared twice in default reportSet
> [INFO] 15 reports configured for maven-project-info-reports-plugin:3.4.2: 
> index, summary, dependency-info, modules, team, scm, issue-management, 
> mailing-lists, dependency-management, dependencies, dependency-convergence, 
> ci-management, plugin-management, plugins, distribution-management
> [INFO] Rendering site for default locale
> Downloading from lda-public: 
> https://deblndw011x.ad001.siemens.net/nexus/content/groups/lda-public/org/apache/apache/29/apache-29-site.xml
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] BUILD FAILURE
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Total time:  3.214 s
> [INFO] Finished at: 2023-04-02T12:51:02+02:00
> [INFO] 
> ------------------------------------------------------------------------
> [ERROR] Failed to execute goal 
> org.apache.maven.plugins:maven-site-plugin:4.0.0-M7-SNAPSHOT:site 
> (default-site) on project mskins-222: SiteToolException: The site descriptor 
> cannot be resolved from the repository: Unable to locate site descriptor: 
> Could not transfer artifact org.apache:apache:xml:site:29 from/to lda-public 
> (https://deblndw011x.ad001.siemens.net/nexus/content/groups/lda-public/): 
> authorization failed for 
> https://deblndw011x.ad001.siemens.net/nexus/content/groups/lda-public/org/apache/apache/29/apache-29-site.xml,
>  status: 403 Forbidden -> [Help 1]
> [ERROR]
> [ERROR] To see the full stack trace of the errors, re-run Maven with the -e 
> switch.
> [ERROR] Re-run Maven using the -X switch to enable full debug logging.
> [ERROR]
> [ERROR] For more information about the errors and possible solutions, please 
> read the following articles:
> [ERROR] [Help 1] 
> http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
> {noformat}
> for a dependency:
> {noformat}
> [INFO] org.apache.maven.cli.event.ExecutionEventLogger - 
> ------------------------------------------------------------------------
> [ERROR] org.apache.maven.cli.MavenCli - Failed to execute goal 
> org.apache.maven.plugins:maven-site-plugin:4.0.0-M7-SNAPSHOT:site 
> (default-site) on project mskins-222: Failed to get report for 
> org.apache.maven.plugins:maven-project-plugin: Plugin 
> org.apache.maven.plugins:maven-project-plugin:3.4.2 or one of its 
> dependencies could not be resolved: Failed to read artifact descriptor for 
> org.apache.maven.plugins:maven-project-plugin:jar:3.4.2: Could not transfer 
> artifact org.apache.maven.plugins:maven-project-plugin:pom:3.4.2 from/to 
> lda-public 
> (https://deblndw011x.ad001.siemens.net/nexus/content/groups/lda-public/): 
> authorization failed for 
> https://deblndw011x.ad001.siemens.net/nexus/content/groups/lda-public/org/apache/maven/plugins/maven-project-plugin/3.4.2/maven-project-plugin-3.4.2.pom,
>  status: 403 Forbidden -> [Help 1]
> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute 
> goal org.apache.maven.plugins:maven-site-plugin:4.0.0-M7-SNAPSHOT:site 
> (default-site) on project mskins-222: Failed to get report for 
> org.apache.maven.plugins:maven-project-plugin
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 
> (MojoExecutor.java:375)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute 
> (MojoExecutor.java:351)
>     at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:117)
>     at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:81)
>     at 
> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
>  (SingleThreadedBuilder.java:56)
>     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute 
> (LifecycleStarter.java:128)
>     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:298)
>     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
>   
> Caused by: org.apache.maven.plugin.MojoExecutionException: Failed to get 
> report for org.apache.maven.plugins:maven-project-plugin
>     at 
> org.apache.maven.reporting.exec.DefaultMavenReportExecutor.buildMavenReports 
> (DefaultMavenReportExecutor.java:167)
>     at 
> org.apache.maven.plugins.site.render.AbstractSiteRenderingMojo.getReports 
> (AbstractSiteRenderingMojo.java:198)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.main 
> (Launcher.java:347)
> Caused by: org.apache.maven.plugin.PluginResolutionException: Plugin 
> org.apache.maven.plugins:maven-project-plugin:3.4.2 or one of its 
> dependencies could not be resolved: Failed to read artifact descriptor for 
> org.apache.maven.plugins:maven-project-plugin:jar:3.4.2
>     at 
> org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve 
> (DefaultPluginDependenciesResolver.java:133)
>     at 
> org.apache.maven.plugin.internal.DefaultMavenPluginManager.getPluginDescriptor
>  (DefaultMavenPluginManager.java:182)
>     at 
> org.apache.maven.reporting.exec.DefaultMavenPluginManagerHelper.getPluginDescriptor
>  (DefaultMavenPluginManagerHelper.java:67)
>     at 
> org.apache.maven.reporting.exec.DefaultMavenReportExecutor.buildReportPlugin 
> (DefaultMavenReportExecutor.java:185)
>     at 
> org.apache.maven.reporting.exec.DefaultMavenReportExecutor.buildMavenReports 
> (DefaultMavenReportExecutor.java:164)
>     at 
> org.apache.maven.plugins.site.render.AbstractSiteRenderingMojo.getReports 
> (AbstractSiteRenderingMojo.java:198)
>     at org.apache.maven.plugins.site.render.SiteMojo.execute 
> (SiteMojo.java:108)
>     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo 
> (DefaultBuildPluginManager.java:137)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.main 
> (Launcher.java:347)
> Caused by: org.eclipse.aether.resolution.ArtifactDescriptorException: Failed 
> to read artifact descriptor for 
> org.apache.maven.plugins:maven-project-plugin:jar:3.4.2
>     at 
> org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom 
> (DefaultArtifactDescriptorReader.java:255)
>     at 
> org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor
>  (DefaultArtifactDescriptorReader.java:171)
>     at 
> org.eclipse.aether.internal.impl.DefaultRepositorySystem.readArtifactDescriptor
>  (DefaultRepositorySystem.java:255)
>     at 
> org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve 
> (DefaultPluginDependenciesResolver.java:107)
>     at 
> org.apache.maven.plugin.internal.DefaultMavenPluginManager.getPluginDescriptor
>  (DefaultMavenPluginManager.java:182)
>     at 
> org.apache.maven.reporting.exec.DefaultMavenPluginManagerHelper.getPluginDescriptor
>  (DefaultMavenPluginManagerHelper.java:67)
>     at 
> org.apache.maven.reporting.exec.DefaultMavenReportExecutor.buildReportPlugin 
> (DefaultMavenReportExecutor.java:185)
>     at 
> org.apache.maven.reporting.exec.DefaultMavenReportExecutor.buildMavenReports 
> (DefaultMavenReportExecutor.java:164)
>     at 
> org.apache.maven.plugins.site.render.AbstractSiteRenderingMojo.getReports 
> (AbstractSiteRenderingMojo.java:198)
>     at org.apache.maven.plugins.site.render.SiteMojo.execute 
> (SiteMojo.java:108)
>     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo 
> (DefaultBuildPluginManager.java:137)
> Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Could 
> not transfer artifact org.apache.maven.plugins:maven-project-plugin:pom:3.4.2 
> from/to lda-public 
> (https://deblndw011x.ad001.siemens.net/nexus/content/groups/lda-public/): 
> authorization failed for 
> https://deblndw011x.ad001.siemens.net/nexus/content/groups/lda-public/org/apache/maven/plugins/maven-project-plugin/3.4.2/maven-project-plugin-3.4.2.pom,
>  status: 403 Forbidden
>     at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve 
> (DefaultArtifactResolver.java:425)
>     at 
> org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts 
> (DefaultArtifactResolver.java:229)
>     at 
> org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact 
> (DefaultArtifactResolver.java:207)
>     at 
> org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom 
> (DefaultArtifactDescriptorReader.java:240)
>     at 
> org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor
>  (DefaultArtifactDescriptorReader.java:171)
>     at 
> org.eclipse.aether.internal.impl.DefaultRepositorySystem.readArtifactDescriptor
>  (DefaultRepositorySystem.java:255)
>     at 
> org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve 
> (DefaultPluginDependenciesResolver.java:107)
>     at 
> org.apache.maven.plugin.internal.DefaultMavenPluginManager.getPluginDescriptor
>  (DefaultMavenPluginManager.java:182)
>     at 
> org.apache.maven.reporting.exec.DefaultMavenPluginManagerHelper.getPluginDescriptor
>  (DefaultMavenPluginManagerHelper.java:67)
>     at 
> org.apache.maven.reporting.exec.DefaultMavenReportExecutor.buildReportPlugin 
> (DefaultMavenReportExecutor.java:185)
>     at 
> org.apache.maven.reporting.exec.DefaultMavenReportExecutor.buildMavenReports 
> (DefaultMavenReportExecutor.java:164)
>     at 
> org.apache.maven.plugins.site.render.AbstractSiteRenderingMojo.getReports 
> (AbstractSiteRenderingMojo.java:198)
>     at org.apache.maven.plugins.site.render.SiteMojo.execute 
> (SiteMojo.java:108)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode 
> (Launcher.java:406)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.main 
> (Launcher.java:347)
> Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not 
> transfer artifact org.apache.maven.plugins:maven-project-plugin:pom:3.4.2 
> from/to lda-public 
> (https://deblndw011x.ad001.siemens.net/nexus/content/groups/lda-public/): 
> authorization failed for 
> https://deblndw011x.ad001.siemens.net/nexus/content/groups/lda-public/org/apache/maven/plugins/maven-project-plugin/3.4.2/maven-project-plugin-3.4.2.pom,
>  status: 403 Forbidden
>     at 
> org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed 
> (ArtifactTransportListener.java:52)
>     at 
> org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run 
> (BasicRepositoryConnector.java:369)
>     at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run 
> (RunnableErrorForwarder.java:75)
>     at 
> org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute
>  (BasicRepositoryConnector.java:628)
>     at org.eclipse.aether.connector.basic.BasicRepositoryConnector.get 
> (BasicRepositoryConnector.java:262)
>     at 
> org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads 
> (DefaultArtifactResolver.java:514)
>     at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve 
> (DefaultArtifactResolver.java:402)
>     at 
> org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts 
> (DefaultArtifactResolver.java:229)
>     at 
> org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact 
> (DefaultArtifactResolver.java:207)
>     at 
> org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom 
> (DefaultArtifactDescriptorReader.java:240)
>     at 
> org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor
>  (DefaultArtifactDescriptorReader.java:171)
>     at 
> org.eclipse.aether.internal.impl.DefaultRepositorySystem.readArtifactDescriptor
>  (DefaultRepositorySystem.java:255)
>     at 
> org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve 
> (DefaultPluginDependenciesResolver.java:107)
>     at 
> org.apache.maven.plugin.internal.DefaultMavenPluginManager.getPluginDescriptor
>  (DefaultMavenPluginManager.java:182)
>     at 
> org.apache.maven.reporting.exec.DefaultMavenPluginManagerHelper.getPluginDescriptor
>  (DefaultMavenPluginManagerHelper.java:67)
>     at 
> org.apache.maven.reporting.exec.DefaultMavenReportExecutor.buildReportPlugin 
> (DefaultMavenReportExecutor.java:185)
>     at 
> org.apache.maven.reporting.exec.DefaultMavenReportExecutor.buildMavenReports 
> (DefaultMavenReportExecutor.java:164)
>     at 
> org.apache.maven.plugins.site.render.AbstractSiteRenderingMojo.getReports 
> (AbstractSiteRenderingMojo.java:198)
>     at org.apache.maven.plugins.site.render.SiteMojo.execute 
> (SiteMojo.java:108)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode 
> (Launcher.java:406)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.main 
> (Launcher.java:347)
> Caused by: org.apache.maven.wagon.authorization.AuthorizationException: 
> authorization failed for 
> https://deblndw011x.ad001.siemens.net/nexus/content/groups/lda-public/org/apache/maven/plugins/maven-project-plugin/3.4.2/maven-project-plugin-3.4.2.pom,
>  status: 403 Forbidden
>     at 
> org.apache.maven.wagon.providers.http.wagon.shared.AbstractHttpClientWagon.fillInputData
>  (AbstractHttpClientWagon.java:1184)
>     at 
> org.apache.maven.wagon.providers.http.wagon.shared.AbstractHttpClientWagon.fillInputData
>  (AbstractHttpClientWagon.java:1140)
>     at org.apache.maven.wagon.StreamWagon.getInputStream 
> (StreamWagon.java:126)
>     at org.apache.maven.wagon.StreamWagon.getIfNewer (StreamWagon.java:88)
>     at org.apache.maven.wagon.StreamWagon.get (StreamWagon.java:61)
>     at org.eclipse.aether.transport.wagon.WagonTransporter$GetTaskRunner.run 
> (WagonTransporter.java:546)
>     at org.eclipse.aether.transport.wagon.WagonTransporter.execute 
> (WagonTransporter.java:430)
>     at org.eclipse.aether.transport.wagon.WagonTransporter.get 
> (WagonTransporter.java:407)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.main 
> (Launcher.java:347)
> [ERROR] org.apache.maven.cli.MavenCli -
> [ERROR] org.apache.maven.cli.MavenCli -
> [ERROR] org.apache.maven.cli.MavenCli - For more information about the errors 
> and possible solutions, please read the following articles:
> [ERROR] org.apache.maven.cli.MavenCli - [Help 1] 
> http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
> {noformat}
> The outcome of this handling is totally dependent on the order of 
> repositories. If the repo A would be at the end the exception stracktrace 
> would be completely different. It is perfectly fine that if one repo is not 
> responding the other one responds properly, regardless if the artifact is 
> found or not. The end result is important.
> Affected components:
> * 
> {{org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolve(Artifact,
>  List<ArtifactRepository>, RepositorySystemSession)}}
> * 
> {{org.apache.maven.project.artifact.MavenMetadataSource.isMissingPom(Exception)}}
> * 
> {{org.apache.maven.project.artifact.MavenMetadataSource.isNonTransferrablePom(Exception)}}
> * {{org.apache.maven.project.DefaultProjectBuilder.build(Artifact, boolean, 
> ProjectBuildingRequest)}}
> * 
> {{org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(RepositorySystemSession,
>  ArtifactDescriptorRequest, ArtifactDescriptorResult)}}
> * 
> {{org.apache.maven.repository.internal.DefaultModelResolver.resolveModel(String,
>  String, String)}}
> * {{org.apache.maven.project.ProjectModelResolver.resolveModel(String, 
> String, String)}}
> * 
> {{org.apache.maven.project.collector.MultiModuleCollectionStrategy.isModuleOutsideRequestScopeDependingOnPluginModule(MavenExecutionRequest,
>  ProjectBuildingException)}}
> * 
> {{org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(RepositorySystemSession,
>  DependencyRequest)}} with {{throw new DependencyResolutionException(result, 
> are);}} with {{cause}} and {{message}} being problematic



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to