Hi Delany

Thanks for the quick response

In my good build, the same build works on a production build with a much
faster build agent. It also runs with Surefire. So there is no issue with
the default local name lock even with Surefire. My guess here is Surefire
does not invoke any dependency resolution

For failing builds,  it is not even run with Surefire. Strange eh?

I also tried file-lock, but it fails at the beginning unable to obtain the
lock for its top-level parent. This should be another discussion.

finally, I tried 'noop' ( id no lock), and it works.  I guess this is 3.8.x
default behavior and it works for my build very well so far last few years

Thanks

-D



On Sat, May 27, 2023 at 12:14 AM Delany <delany.middle...@gmail.com> wrote:

> 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
> >
>

Reply via email to