liuchangcheng created MNG-7551:
----------------------------------

             Summary: Multithreaded building can create bad files for 
downloaded artifacts in local repository
                 Key: MNG-7551
                 URL: https://issues.apache.org/jira/browse/MNG-7551
             Project: Maven
          Issue Type: Bug
          Components: Artifacts and Repositories
    Affects Versions: 3.8.6
            Reporter: liuchangcheng
            Assignee: Michael Osipov


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"



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

Reply via email to