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)