Uploaded image for project: 'Maven'
  1. Maven
  2. MNG-7551

Multithreaded building can create bad files for downloaded artifacts in local repository

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Duplicate
    • 3.8.6
    • None
    • None

    Description

      Within a parallel build, modules A and B can start at the same time and decide at the same time that they need to download artifact X. Since X is not available locally, both can start download of X. Both will download X and both will try to write the file for X to disk.

      On Windows platforms, one of them can fail with file locking problems. On Unixes the contents of the written file can be non-deterministic.

      This issue is related to MNG-2802 in the sense that it can create a corrupted artifact file in the local repository, and it can happen to ANY file written. But as opposed to MNG-2802 the synhronization needed to fix this issue is basically only within a single running maven process, so regular java mechanisms can apply, whereas MNG-2802 probably needs to use a totally different solution space.

       

      is this issue fixed?

      we are still facing this problem with maven 3.8.6 

       

      I get error like this below

      [WARNING] Failed to write tracking file D:\opt\repository11\org\apache\ant\ant-launcher\1.10.12\ant-launcher-1.10.12.jar.lastUpdated
      java.io.FileNotFoundException: D:\opt\repository11\org\apache\ant\ant-launcher\1.10.12\ant-launcher-1.10.12.jar.lastUpdated (另一个程序正在使用此文件,进程无法访问。)
          at java.io.RandomAccessFile.open0 (Native Method)
          at java.io.RandomAccessFile.open (RandomAccessFile.java:316)
          at java.io.RandomAccessFile.<init> (RandomAccessFile.java:243)
          at org.eclipse.aether.internal.impl.TrackingFileManager.update (TrackingFileManager.java:86)
          at org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.write (DefaultUpdateCheckManager.java:590)
          at org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.touchArtifact (DefaultUpdateCheckManager.java:526)
          at org.eclipse.aether.internal.impl.DefaultArtifactResolver.evaluateDownloads (DefaultArtifactResolver.java:634)
          at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads (DefaultArtifactResolver.java:525)
          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.DefaultRepositorySystem.resolveDependencies (DefaultRepositorySystem.java:340)
          at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolveInternal (DefaultPluginDependenciesResolver.java:226)
          at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve (DefaultPluginDependenciesResolver.java:165)
          at org.apache.maven.plugin.internal.DefaultMavenPluginManager.resolveExtensionArtifacts (DefaultMavenPluginManager.java:911)
          at org.apache.maven.plugin.internal.DefaultMavenPluginManager.setupExtensionsRealm (DefaultMavenPluginManager.java:842)
          at org.apache.maven.project.DefaultProjectBuildingHelper.createProjectRealm (DefaultProjectBuildingHelper.java:197)
          at org.apache.maven.project.DefaultModelBuildingListener.buildExtensionsAssembled (DefaultModelBuildingListener.java:101)
          at org.apache.maven.model.building.ModelBuildingEventCatapult$1.fire (ModelBuildingEventCatapult.java:44)
          at org.apache.maven.model.building.DefaultModelBuilder.fireEvent (DefaultModelBuilder.java:1450)
          at org.apache.maven.model.building.DefaultModelBuilder.build (DefaultModelBuilder.java:530)
          at org.apache.maven.model.building.DefaultModelBuilder.build (DefaultModelBuilder.java:510)
          at org.apache.maven.project.DefaultProjectBuilder.build (DefaultProjectBuilder.java:618)
          at org.apache.maven.project.DefaultProjectBuilder.build (DefaultProjectBuilder.java:387)
          at org.apache.maven.graph.DefaultGraphBuilder.collectProjects (DefaultGraphBuilder.java:414)
          at org.apache.maven.graph.DefaultGraphBuilder.getProjectsForMavenReactor (DefaultGraphBuilder.java:405)
          at org.apache.maven.graph.DefaultGraphBuilder.build (DefaultGraphBuilder.java:82)
          at org.apache.maven.DefaultMaven.buildGraph (DefaultMaven.java:532)
          at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:219)
          at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
          at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
          at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
          at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)

       

      [ERROR] Caused by: D:\opt\repository11\org\apache\httpcomponents\httpcore\4.3.3\httpcore-4.3.3.jar.part.lock (拒绝访问。)

       

      mvn -version
      Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
      Maven home: D:\apache-maven-3.8.6
      Java version: 1.8.0_141, vendor: Oracle Corporation, runtime: D:\Program Files\Java\jdk1.8.0_141\jre
      Default locale: zh_CN, platform encoding: GBK
      OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

      Attachments

        Issue Links

          Activity

            People

              michael-o Michael Osipov
              liuchangcheng liuchangcheng
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: