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

Michael Osipov commented on MNG-7705:
-------------------------------------

Did more testing, as it turns out, my home machine with
{noformat}
$ mount | grep /tmp
/dev/ada0p4 on /tmp (ufs, local, soft-updates)
{noformat}
reliably fails with {{file-lock}}.
First the good story, Redisson works reliably and hasn't failed in tens of 
builds:
{noformat}
mosipov@bsd1srv:/tmp/maven-troubleshooting-MNG-7705 (main %=)
$ cat args
main
branch4
branch5
mosipov@bsd1srv:/tmp/maven-troubleshooting-MNG-7705 (main %=)
$ echo $MAVEN_ARGS
-Daether.syncContext.named.factory=rwlock-redisson 
-Daether.syncContext.named.nameMapper=discriminating 
-Daether.syncContext.named.time=120
mosipov@bsd1srv:/tmp/maven-troubleshooting-MNG-7705 (main %=)
$ echo $MAVEN_OPTS
-Dorg.slf4j.simpleLogger.showThreadName=true 
-Dorg.slf4j.simpleLogger.showDateTime=true 
-Dorg.slf4j.simpleLogger.log.org.eclipse.aether=trace
mosipov@bsd1srv:/tmp/maven-troubleshooting-MNG-7705 (main %=)
$ rm -rf /tmp/MNG-7705-repo/  ; xargs -P 0 -I ^ 
/tmp/apache-maven-3.9.1-SNAPSHOT-redisson/bin/mvn -V dependency:sources 
dependency:resolve -Dclassifier=javadoc -Dmaven.repo.local=/tmp/MNG-7705-repo 
-l ^.out -f ^ < args ; grep BUILD *.out
branch4.out:99131 [main] [INFO] BUILD SUCCESS
branch5.out:99341 [main] [INFO] BUILD SUCCESS
main.out:99396 [main] [INFO] BUILD SUCCESS
{noformat}

Now let's do with {{file-lock}}:
{noformat}
mosipov@bsd1srv:/tmp/maven-troubleshooting-MNG-7705 (main %=)
$ export MAVEN_ARGS="-Daether.syncContext.named.factory=file-lock 
-Daether.syncContext.named.nameMapper=file-gav 
-Daether.syncContext.named.time=30"
mosipov@bsd1srv:/tmp/maven-troubleshooting-MNG-7705 (main %=)
$ rm -rf /tmp/MNG-7705-repo/  ; xargs -P 0 -I ^ 
/tmp/apache-maven-3.9.1-SNAPSHOT-redisson/bin/mvn -V dependency:sources 
dependency:resolve -Dclassifier=javadoc -Dmaven.repo.local=/tmp/MNG-7705-repo 
-l ^.out -f ^ < args ; grep BUILD *.out
branch4.out:17199 [main] [INFO] BUILD FAILURE
branch5.out:113607 [main] [INFO] BUILD SUCCESS
main.out:113791 [main] [INFO] BUILD SUCCESS
{noformat}

No here is the thing, when you increase to 120 seconds of wait time the build 
won't fail. So my assumption is that either the wait for the file lock or the 
file lock itself is broken. Upshot: file lock IS broken. No doubt. In ANY case, 
a proper exception should be thrown that the lock could not be acquired which I 
had with Redisson and 30 s:
{noformat}
$ rm -rf /tmp/MNG-7705-repo/  ; xargs -P 0 -I ^ 
/tmp/apache-maven-3.9.1-SNAPSHOT-redisson/bin/mvn -V dependency:sources 
dependency:resolve -Dclassifier=javadoc -Dmaven.repo.local=/tmp/MNG-7705-repo 
-l ^.out -f ^ < args ; grep BUILD *.out
branch4.out:91093 [main] [INFO] BUILD SUCCESS
branch5.out:40002 [main] [INFO] BUILD FAILURE
main.out:91219 [main] [INFO] BUILD SUCCESS
...
2447 9996 [main] [TRACE] Need 1 write lock(s) for 
[511a210267530dd0913bd7b515b6ad1cd2018a2c:artifact:org.apache.commons:commons-math3:3.6.1]
2448 9997 [main] [TRACE] Acquiring write lock for 
'511a210267530dd0913bd7b515b6ad1cd2018a2c:artifact:org.apache.commons:commons-math3:3.6.1'
2449 40001 [main] [TRACE] Failed to acquire write lock for 
'511a210267530dd0913bd7b515b6ad1cd2018a2c:artifact:org.apache.commons:commons-math3:3.6.1'
2450 40002 [main] [INFO] 
------------------------------------------------------------------------
2451 40002 [main] [INFO] BUILD FAILURE
2452 40002 [main] [INFO] 
------------------------------------------------------------------------
2453 40002 [main] [INFO] Total time:  37.918 s
2454 40002 [main] [INFO] Finished at: 2023-03-10T01:56:42+01:00
2455 40002 [main] [INFO] 
------------------------------------------------------------------------
2456 40003 [main] [ERROR] Could not acquire write lock for 
'511a210267530dd0913bd7b515b6ad1cd2018a2c:artifact:org.apache.commons:commons-math3:3.6.1'
{noformat}
So 30 s passed and no lock acquired.

I can provide all out files, if necessary. [~sellersj], I recommend to move to 
Redisson for now.

[~cstamas], what now?

> Sporadic failures on multiple builds sharing the same local repo when writing 
> the .lastUpdated file
> ---------------------------------------------------------------------------------------------------
>
>                 Key: MNG-7705
>                 URL: https://issues.apache.org/jira/browse/MNG-7705
>             Project: Maven
>          Issue Type: Bug
>    Affects Versions: 3.9.0
>         Environment: Apache Maven 3.9.0 
> (9b58d2bad23a66be161c4664ef21ce219c2c8584)
> Maven home: /data00/bamboo/maven/maven-next
> Java version: 1.8.0_362, vendor: Red Hat, Inc., runtime: 
> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b09-2.el8_7.x86_64/jre
> Default locale: en_CA, platform encoding: ISO-8859-1
> OS name: "linux", version: "4.18.0-193.el8.x86_64", arch: "amd64", family: 
> "unix"
>            Reporter: Jim Sellers
>            Priority: Minor
>         Attachments: 2023-02-28_failure.zip, MNG-7705-2023-02-27.zip, 
> MNG-7705-2023-03-07.zip, MNG-7705.zip, MNG-7705_strace_2023-02-27.zip, 
> apache-maven-3.9.1-SNAPSHOT-bin.tar-1.gz, failed_plan-377290782-JOB1-15.zip, 
> maven-resolver-util-1.9.6-SNAPSHOT.jar, xaa-1.xz, xab-1.xz, xac-1.xz, xad-1.xz
>
>
> On a CI server, we have multiple builds running on the same host and sharing 
> the same repo.
> While testing 3.9.0, I started to see a NIO exception for the 
> {{.lastUpdated}} file. This has worked fine for years, all the way up to 
> 3.8.7.
> If you re-run the build, it will work. I think that it's just a collision 
> between the different processes.
> {code:title=example command}
> mvn --batch-mode dependency:sources dependency:resolve -Dclassifier=javadoc
> # this uses dependency:3.5.0:sources
> {code}
> {code:title=stracktrace}
> [WARNING] Failed to write tracking file 
> '/home/bamboo/.m2/repository/io/smallrye/config/smallrye-config/2.3.0/smallrye-config-2.3.0-javadoc.jar.lastUpdated'
>     java.nio.file.NoSuchFileException: 
> /home/bamboo/.m2/repository/io/smallrye/config/smallrye-config/2.3.0/smallrye-config-2.3.0-javadoc.jar.lastUpdated
>         at sun.nio.fs.UnixException.translateToIOException 
> (UnixException.java:86)
>         at sun.nio.fs.UnixException.rethrowAsIOException 
> (UnixException.java:102)
>         at sun.nio.fs.UnixException.rethrowAsIOException 
> (UnixException.java:107)
>         at sun.nio.fs.UnixFileSystemProvider.newByteChannel 
> (UnixFileSystemProvider.java:214)
>         at java.nio.file.Files.newByteChannel (Files.java:361)
>         at java.nio.file.Files.newByteChannel (Files.java:407)
>         at java.nio.file.spi.FileSystemProvider.newInputStream 
> (FileSystemProvider.java:384)
>         at java.nio.file.Files.newInputStream (Files.java:152)
>         at org.eclipse.aether.internal.impl.DefaultTrackingFileManager.update 
> (DefaultTrackingFileManager.java:90)
>         at org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.write 
> (DefaultUpdateCheckManager.java:604)
>         at 
> org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.touchArtifact 
> (DefaultUpdateCheckManager.java:539)
>         at 
> org.eclipse.aether.internal.impl.DefaultArtifactResolver.evaluateDownloads 
> (DefaultArtifactResolver.java:701)
>         at 
> org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads 
> (DefaultArtifactResolver.java:592)
>         at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve 
> (DefaultArtifactResolver.java:478)
>         at 
> org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts 
> (DefaultArtifactResolver.java:278)
>         at 
> org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact 
> (DefaultArtifactResolver.java:255)
>         at 
> org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact 
> (DefaultRepositorySystem.java:296)
>         at 
> org.apache.maven.shared.transfer.artifact.resolve.internal.Maven31ArtifactResolver.resolveArtifact
>  (Maven31ArtifactResolver.java:97)
>         at 
> org.apache.maven.shared.transfer.artifact.resolve.internal.Maven31ArtifactResolver.resolveArtifact
>  (Maven31ArtifactResolver.java:78)
>         at 
> org.apache.maven.shared.transfer.artifact.resolve.internal.DefaultArtifactResolver.resolveArtifact
>  (DefaultArtifactResolver.java:70)
>         at 
> org.apache.maven.plugins.dependency.fromDependencies.AbstractDependencyFilterMojo.resolve
>  (AbstractDependencyFilterMojo.java:464)
>         at 
> org.apache.maven.plugins.dependency.fromDependencies.AbstractDependencyFilterMojo.getClassifierTranslatedDependencies
>  (AbstractDependencyFilterMojo.java:408)
>         at 
> org.apache.maven.plugins.dependency.fromDependencies.AbstractDependencyFilterMojo.getDependencySets
>  (AbstractDependencyFilterMojo.java:340)
>         at 
> org.apache.maven.plugins.dependency.resolvers.ResolveDependenciesMojo.doExecute
>  (ResolveDependenciesMojo.java:103)
>         at 
> org.apache.maven.plugins.dependency.resolvers.ResolveDependencySourcesMojo.doExecute
>  (ResolveDependencySourcesMojo.java:52)
>         at org.apache.maven.plugins.dependency.AbstractDependencyMojo.execute 
> (AbstractDependencyMojo.java:159)
>         at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo 
> (DefaultBuildPluginManager.java:126)
>         at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 
> (MojoExecutor.java:342)
>         at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute 
> (MojoExecutor.java:330)
>         at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:213)
>         at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:175)
>         at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 
> (MojoExecutor.java:76)
>         at org.apache.maven.lifecycle.internal.MojoExecutor$1.run 
> (MojoExecutor.java:163)
>         at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute 
> (DefaultMojosExecutionStrategy.java:39)
>         at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:160)
>         at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:105)
>         at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:73)
>         at 
> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
>  (SingleThreadedBuilder.java:53)
>         at org.apache.maven.lifecycle.internal.LifecycleStarter.execute 
> (LifecycleStarter.java:118)
>         at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:260)
>         at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:172)
>         at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:100)
>         at org.apache.maven.cli.MavenCli.execute (MavenCli.java:821)
>         at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:270)
>         at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke 
> (NativeMethodAccessorImpl.java:62)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke 
> (DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke (Method.java:498)
>         at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced 
> (Launcher.java:282)
>         at org.codehaus.plexus.classworlds.launcher.Launcher.launch 
> (Launcher.java:225)
>         at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode 
> (Launcher.java:406)
>         at org.codehaus.plexus.classworlds.launcher.Launcher.main 
> (Launcher.java:347)
> {code}



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

Reply via email to