Dan,

iI I provide you with a patched Maven ZIP, or,
if I point you to two PRs (one in resolver and one in maven-3.9.x) to build
patched Maven locally,
could you stick that patched Maven into your env just to try it out?

Thanks
T

On Thu, Mar 23, 2023 at 9:37 AM Tamás Cservenák <ta...@cservenak.net> wrote:

> Ok,
>
> this is def a timeout on lock:
>
> https://github.com/apache/maven-resolver/blob/e439b343d8d94bdcc82965a3d4f2584c31c319c0/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/NamedLockFactoryAdapter.java#L157-L158
>
> Pls increase the timeout.
>
> T
>
> On Thu, Mar 23, 2023 at 9:32 AM Dan Tran <dant...@gmail.com> wrote:
>
>> this is not a single threaded buld
>>
>> stack trace:
>>
>> *9:35:34*  [ERROR] Could not acquire write lock for
>> 'artifact:ch.qos.logback:logback-classic:1.2.10'*09:35:34*
>> java.lang.IllegalStateException: Could not acquire write lock for
>> 'artifact:ch.qos.logback:logback-classic:1.2.10'*09:35:34*      at
>>
>> org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire
>> (NamedLockFactoryAdapter.java:158)*09:35:34*      at
>> org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts
>> (DefaultArtifactResolver.java:259)*09:35:34*      at
>>
>> org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies
>> (DefaultRepositorySystem.java:352)*09:35:34*      at
>>
>> org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolveInternal
>> (DefaultPluginDependenciesResolver.java:212)*09:35:34*      at
>> org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve
>> (DefaultPluginDependenciesResolver.java:158)*09:35:34*      at
>>
>> org.apache.maven.plugin.internal.DefaultMavenPluginManager.createPluginRealm
>> (DefaultMavenPluginManager.java:372)*09:35:34*      at
>>
>> org.apache.maven.plugin.internal.DefaultMavenPluginManager.lambda$setupPluginRealm$1
>> (DefaultMavenPluginManager.java:335)*09:35:34*      at
>> org.apache.maven.plugin.DefaultPluginRealmCache.lambda$get$0
>> (DefaultPluginRealmCache.java:156)*09:35:34*      at
>> java.util.concurrent.ConcurrentHashMap.computeIfAbsent
>> (ConcurrentHashMap.java:1737)*09:35:34*      at
>> org.apache.maven.plugin.DefaultPluginRealmCache.get
>> (DefaultPluginRealmCache.java:154)*09:35:34*      at
>>
>> org.apache.maven.plugin.internal.DefaultMavenPluginManager.setupPluginRealm
>> (DefaultMavenPluginManager.java:334)*09:35:34*      at
>> org.apache.maven.plugin.DefaultBuildPluginManager.getPluginRealm
>> (DefaultBuildPluginManager.java:205)*09:35:34*      at
>> org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo
>> (DefaultBuildPluginManager.java:98)*09:35:34*      at
>> org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2
>> (MojoExecutor.java:342)*09:35:34*      at
>> org.apache.maven.lifecycle.internal.MojoExecutor.doExecute
>> (MojoExecutor.java:330)*09:35:34*      at
>> org.apache.maven.lifecycle.internal.MojoExecutor.execute
>> (MojoExecutor.java:213)*09:35:34*      at
>> org.apache.maven.lifecycle.internal.MojoExecutor.execute
>> (MojoExecutor.java:175)*09:35:34*      at
>> org.apache.maven.lifecycle.internal.MojoExecutor.access$000
>> (MojoExecutor.java:76)*09:35:34*      at
>> org.apache.maven.lifecycle.internal.MojoExecutor$1.run
>> (MojoExecutor.java:163)*09:35:34*      at
>> org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute
>> (DefaultMojosExecutionStrategy.java:39)*09:35:34*      at
>> org.apache.maven.lifecycle.internal.MojoExecutor.execute
>> (MojoExecutor.java:160)*09:35:34*      at
>> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
>> (LifecycleModuleBuilder.java:105)*09:35:34*      at
>>
>> org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call
>> (MultiThreadedBuilder.java:193)*09:35:34*      at
>>
>> org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call
>> (MultiThreadedBuilder.java:180)*09:35:34*      at
>> java.util.concurrent.FutureTask.run (FutureTask.java:264)*09:35:34*
>>   at java.util.concurrent.Executors$RunnableAdapter.call
>> (Executors.java:515)*09:35:34*      at
>> java.util.concurrent.FutureTask.run (FutureTask.java:264)*09:35:34*
>>   at java.util.concurrent.ThreadPoolExecutor.runWorker
>> (ThreadPoolExecutor.java:1128)*09:35:34*      at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run
>> (ThreadPoolExecutor.java:628)*09:35:34*      at java.lang.Thread.run
>> (Thread.java:829)*09:35:34*  [ERROR] java.lang.IllegalStateException:
>> Could not acquire write lock for
>> 'artifact:ch.qos.logback:logback-classic:1.2.10'*09:35:34*
>> java.util.concurrent.ExecutionException:
>> java.lang.IllegalStateException: Could not acquire write lock for
>> 'artifact:ch.qos.logback:logback-classic:1.2.10'*09:35:34*      at
>> java.util.concurrent.FutureTask.report (FutureTask.java:122)*09:35:34*
>>      at java.util.concurrent.FutureTask.get
>> (FutureTask.java:191)*09:35:34*      at
>>
>> org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder.multiThreadedProjectTaskSegmentBuild
>> (MultiThreadedBuilder.java:140)*09:35:34*      at
>>
>> org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder.build
>> (MultiThreadedBuilder.java:101)*09:35:34*      at
>> org.apache.maven.lifecycle.internal.LifecycleStarter.execute
>> (LifecycleStarter.java:118)*09:35:34*      at
>> org.apache.maven.DefaultMaven.doExecute
>> (DefaultMaven.java:261)*09:35:34*      at
>> org.apache.maven.DefaultMaven.doExecute
>> (DefaultMaven.java:173)*09:35:34*      at
>> org.apache.maven.DefaultMaven.execute
>> (DefaultMaven.java:101)*09:35:34*      at
>> org.apache.maven.cli.MavenCli.execute (MavenCli.java:827)*09:35:34*
>>   at org.apache.maven.cli.MavenCli.doMain
>> (MavenCli.java:272)*09:35:34*      at
>> org.apache.maven.cli.MavenCli.main (MavenCli.java:195)*09:35:34*
>> at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native
>> Method)*09:35:34*      at
>> jdk.internal.reflect.NativeMethodAccessorImpl.invoke
>> (NativeMethodAccessorImpl.java:62)*09:35:34*      at
>> jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke
>> (DelegatingMethodAccessorImpl.java:43)*09:35:34*      at
>> java.lang.reflect.Method.invoke (Method.java:566)*09:35:34*      at
>> org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced
>> (Launcher.java:282)*09:35:34*      at
>> org.codehaus.plexus.classworlds.launcher.Launcher.launch
>> (Launcher.java:225)*09:35:34*      at
>> org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode
>> (Launcher.java:406)*09:35:34*      at
>> org.codehaus.plexus.classworlds.launcher.Launcher.main
>> (Launcher.java:347)*09:35:34*      at
>> jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native
>> Method)*09:35:34*      at
>> jdk.internal.reflect.NativeMethodAccessorImpl.invoke
>> (NativeMethodAccessorImpl.java:62)*09:35:34*      at
>> jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke
>> (DelegatingMethodAccessorImpl.java:43)*09:35:34*      at
>> java.lang.reflect.Method.invoke (Method.java:566)*09:35:34*      at
>> org.apache.maven.wrapper.BootstrapMainStarter.start
>> (BootstrapMainStarter.java:52)*09:35:34*      at
>> org.apache.maven.wrapper.WrapperExecutor.execute
>> (WrapperExecutor.java:161)*09:35:34*      at
>> org.apache.maven.wrapper.MavenWrapperMain.main
>> (MavenWrapperMain.java:73)
>>
>>
>> thanks
>>
>>
>> -D
>>
>>
>> On Wed, Mar 22, 2023 at 3:23 PM Tamás Cservenák <ta...@cservenak.net>
>> wrote:
>>
>> > Interesting.
>> >
>> > You did not provide any stack, so I just guessed "timeout". For
>> > increasing/decreasing "wait time" (def is 30 sec), see here:
>> > https://maven.apache.org/resolver/configuration.html
>> > Look for "aether.syncContext.named.time" and
>> > "aether.syncContext.named.time.unit".
>> > Also good to look at:
>> > https://maven.apache.org/resolver/maven-resolver-named-locks/index.html
>> >
>> > And finally, there are redisson and hazelcast provided locks:
>> >
>> >
>> https://maven.apache.org/resolver/maven-resolver-named-locks-redisson/index.html
>> >
>> > Also, "So I guess it is using the default file-lock?" -- Maven 3.9.1
>> does
>> > NOT use file locking by default, so unless the docker image you use, or
>> > whatever sets it up....
>> > It would be good to see some stack and what locking is in use.
>> >
>> > Note: if it turns out you don't use file locking, but the default (Maven
>> > 3.9.1 by default uses in-jvm "rwlock-local" (backed by ReadWriteLock),
>> then
>> > really just increase time....
>> >
>> > How about concurrency, I guess this is not a single threaded build?
>> >
>> > T
>> >
>> > PS: Is late here, my response to your response will probably come in my
>> > morning
>> >
>> > On Wed, Mar 22, 2023 at 11:08 PM Dan Tran <dant...@gmail.com> wrote:
>> >
>> > > Thanks for the quick response
>> > >
>> > > This is a simple switch from 3.8.7 to 3.9.1 ( did not see this issue
>> when
>> > > tested with  3.9.0). So I guess it is using the default file-lock?
>> > >
>> > > The build runs inside a docker container on Jenkins agent with no
>> > antivirus
>> > > checker. The build always starts from scratch
>> > >
>> > > artifact:ch.qos.logback:logback-classic:1.2.10  is common artifact
>> > > used by all components
>> > >
>> > >
>> > > How do I increase timeout?
>> > >
>> > >
>> > > Thanks
>> > >
>> > >
>> > > -D
>> > >
>> > >
>> > > On Wed, Mar 22, 2023 at 11:44 AM Tamás Cservenák <ta...@cservenak.net
>> >
>> > > wrote:
>> > >
>> > > > Howdy Dan,
>> > > >
>> > > > You did not mention what locking implementation you use, what params
>> > etc?
>> > > > file-lock? redisson? something else?
>> > > >
>> > > > At the same time, it is rather strange that you mention "at the same
>> > > > artifact" thing... from here and below I will assume you use file
>> > locks:
>> > > > - can you do something like lsof on Linux? Meaning, can you ensure
>> > > nothing
>> > > > (some app, IDE or antivirus) is keeping the file open?
>> > > > - can you tell a bit more about that artifact? Is it installed one?
>> > Maybe
>> > > > from the current build? A dependency? In case of HUGE build and
>> COMMON
>> > > > artifact (ie. slf4j-api) that is used in almost all modules may be
>> > "hot",
>> > > > maybe try to increase lock timeout? Or even radically lessen (that
>> > should
>> > > > make problem occur more often perhaps)
>> > > >
>> > > > HTH
>> > > > Tamas
>> > > >
>> > > > On Wed, Mar 22, 2023 at 7:32 PM Dan Tran <dant...@gmail.com> wrote:
>> > > >
>> > > > > Hi
>> > > > >
>> > > > > My large 400+ modules build facing the mentioned locking issue
>> > > > consistently
>> > > > > at the same artifact
>> > > > >
>> > > > > artifact:ch.qos.logback:logback-classic:1.2.10
>> > > > >
>> > > > >
>> > > > > any one see this issue at your build?
>> > > > >
>> > > > >
>> > > > > Thanks
>> > > > >
>> > > > >
>> > > > > -D
>> > > > >
>> > > > >
>> > > > > dont see same issue at smaller build
>> > > > >
>> > > >
>> > >
>> >
>>
>

Reply via email to