Hi Dan, >From the configuration page "local named locks are only suited within one JVM with a multithreaded access." https://maven.apache.org/resolver/maven-resolver-named-locks/index.html But the default lock factory is a local named lock (rwlock-local), so if more than one JVM is running and accessing local Maven repo then we can expect problems.
"The default setting is forkCount=1/reuseForks=true, which means that maven-surefire-plugin creates one new JVM process to execute all tests in one Maven module." https://maven.apache.org/surefire/maven-surefire-plugin/examples/fork-options-and-parallel-execution.html I run builds with at least 3 threads, so at any time there could be 4 JVMs running. So it seems as long as its using surefire-maven-plugin it will need to use "file-lock". This works fine on one machine (linux) but fails immediately with failed-to-acquire error on another machine (Windows). Do you agree with my assessment? Can you use file-lock factory successfully? I see also that the time between starting the build and the error is 40s, which happens to be exactly a third of the time it says it waited, so something definitely not right here: 15:32:26 C:\ws\targ-2.2.16>cmd /C "set JAVA_HOME=C:\opt\zulu11.54.25-ca-fx-jdk11.0.14.1-win_x64&& .\mvnw.cmd --threads 3 ...." 15:33:02 [ERROR] Internal error: java.lang.IllegalStateException: Could not acquire lock(s) -> [Help 1] 15:33:02 org.apache.maven.InternalErrorException: Internal error: java.lang.IllegalStateException: Could not acquire lock(s) 15:33:02 at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:109) 15:33:02 at org.apache.maven.cli.MavenCli.execute (MavenCli.java:910) 15:33:02 at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283) 15:33:02 at org.apache.maven.cli.MavenCli.main (MavenCli.java:206) 15:33:02 at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) 15:33:02 at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 15:33:02 at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 15:33:02 at java.lang.reflect.Method.invoke (Method.java:566) 15:33:02 at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283) 15:33:02 at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226) 15:33:02 at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407) 15:33:02 at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348) 15:33:02 Caused by: java.lang.IllegalStateException: Could not acquire lock(s) 15:33:02 at org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire (NamedLockFactoryAdapter.java:219) 15:33:02 at org.eclipse.aether.internal.impl.DefaultMetadataResolver.resolve (DefaultMetadataResolver.java:193) 15:33:02 at org.eclipse.aether.internal.impl.DefaultMetadataResolver.resolveMetadata (DefaultMetadataResolver.java:179) 15:33:02 at org.apache.maven.repository.internal.DefaultVersionResolver.resolveVersion (DefaultVersionResolver.java:196) 15:33:02 at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve (DefaultArtifactResolver.java:331) 15:33:02 at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts (DefaultArtifactResolver.java:260) 15:33:02 at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact (DefaultArtifactResolver.java:242) 15:33:02 at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact (DefaultRepositorySystem.java:277) 15:33:02 at org.apache.maven.project.ProjectModelResolver.resolveModel (ProjectModelResolver.java:172) 15:33:02 at org.apache.maven.project.ProjectModelResolver.resolveModel (ProjectModelResolver.java:218) 15:33:02 at org.apache.maven.model.building.DefaultModelBuilder.readParentExternally (DefaultModelBuilder.java:1009) 15:33:02 at org.apache.maven.model.building.DefaultModelBuilder.readParent (DefaultModelBuilder.java:801) 15:33:02 at org.apache.maven.model.building.DefaultModelBuilder.build (DefaultModelBuilder.java:327) 15:33:02 at org.apache.maven.model.building.DefaultModelBuilder.build (DefaultModelBuilder.java:243) 15:33:02 at org.apache.maven.project.DefaultProjectBuilder.build (DefaultProjectBuilder.java:447) 15:33:02 at org.apache.maven.project.DefaultProjectBuilder.build (DefaultProjectBuilder.java:410) 15:33:02 at org.apache.maven.project.DefaultProjectBuilder.build (DefaultProjectBuilder.java:367) 15:33:02 at org.apache.maven.graph.DefaultGraphBuilder.collectProjects (DefaultGraphBuilder.java:349) 15:33:02 at org.apache.maven.graph.DefaultGraphBuilder.getProjectsForMavenReactor (DefaultGraphBuilder.java:340) 15:33:02 at org.apache.maven.graph.DefaultGraphBuilder.build (DefaultGraphBuilder.java:76) 15:33:02 at org.apache.maven.DefaultMaven.buildGraph (DefaultMaven.java:448) 15:33:02 at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:197) 15:33:02 at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173) 15:33:02 at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101) 15:33:02 at org.apache.maven.cli.MavenCli.execute (MavenCli.java:910) 15:33:02 at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283) 15:33:02 at org.apache.maven.cli.MavenCli.main (MavenCli.java:206) 15:33:02 at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) 15:33:02 at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 15:33:02 at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 15:33:02 at java.lang.reflect.Method.invoke (Method.java:566) 15:33:02 at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283) 15:33:02 at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226) 15:33:02 at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407) 15:33:02 at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348) 15:33:02 Suppressed: java.lang.IllegalStateException: Attempt 1: Could not acquire write lock for 'C:\ws\targ-2.2.16\.m2\repository\.locks\com.segway~segway-build~1-SNAPSHOT.lock' in 120 SECONDS Delany On Sat, 27 May 2023 at 08:28, Dan Tran <dant...@gmail.com> wrote: > Hi > > My multi-threaded build encounters the below failure at the very end of the > build > > *05:26:33* Suppressed: java.lang.IllegalStateException: Attempt > 1: Could not acquire read lock for > 'artifact:ch.qos.logback:logback-classic:1.2.12' in 150 > SECONDS*05:26:33* at > > org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire > (NamedLockFactoryAdapter.java:202)*05:26:33* at > org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve > (DefaultArtifactResolver.java:275)*05:26:33* at > org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts > (DefaultArtifactResolver.java:260)*05:26:33* at > > org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies > (DefaultRepositorySystem.java:352)*05:26:33* at > org.apache.maven.project.DefaultProjectDependenciesResolver.resolve > (DefaultProjectDependenciesResolver.java:182)*05:26:33* at > > org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies > (LifecycleDependencyResolver.java:224)*05:26:33* at > > org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies > (LifecycleDependencyResolver.java:136) > > > Some observation > > > 1. Seems to happen only on slow build host/agent > > 2. The failure is 2/3 into the build where logback-classic is the most > common dependency of all modules should be at local already > > 3. Increase lock time not helping > > 4. why readlock? instead of writelock > > > Thought? > > > Thanks > > > -D >