You could try out this one, if you can: Resolver PR: https://github.com/apache/maven-resolver/pull/272 Then build Maven 3.9.x using built resolver (just modify the POM to use resolver 1.9.8-SNAPSHOT) https://github.com/apache/maven/tree/maven-3.9.x
https://issues.apache.org/jira/browse/MRESOLVER-346 If you want "baked" ZIP, just ping. Thanks T On Thu, Mar 23, 2023 at 11:34 AM Tamás Cservenák <[email protected]> wrote: > 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 <[email protected]> > 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 <[email protected]> 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 <[email protected]> >>> 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 <[email protected]> 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 < >>> [email protected]> >>> > > 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 <[email protected]> >>> 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 >>> > > > > >>> > > > >>> > > >>> > >>> >>
