[ https://issues.apache.org/jira/browse/MRESOLVER-374?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17736643#comment-17736643 ]
Victor Rubezhny edited comment on MRESOLVER-374 at 6/24/23 12:37 AM: --------------------------------------------------------------------- Note that this never happened with v.1.9.12 - there probably were some problems with resolve (at least I suspect so), but NOT that serious - at least I haven't seen locking problems for quite a long time. I tried (from Lemminx-Maven side) to exclude the resolving for Maven project dependencies (by `setResolveDependencies(false)` on `ProjectBuildingRequest` used when building a project) - this has made the stacktrace shorter, but still `NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire()` is invoked and threw `IllegalStateException` the same number of cases: ``` Jun 24, 2023 2:35:48 AM org.eclipse.lemminx.extensions.maven.MavenProjectCache getSnapshotProject SEVERE: Could not acquire lock(s) java.lang.IllegalStateException: Could not acquire lock(s) at org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire(NamedLockFactoryAdapter.java:219) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:271) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:259) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:242) at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:277) at org.apache.maven.project.ProjectModelResolver.resolveModel(ProjectModelResolver.java:172) at org.apache.maven.project.ProjectModelResolver.resolveModel(ProjectModelResolver.java:218) at org.apache.maven.model.building.DefaultModelBuilder.readParentExternally(DefaultModelBuilder.java:1009) at org.apache.maven.model.building.DefaultModelBuilder.readParent(DefaultModelBuilder.java:801) at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:327) at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:243) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:176) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:123) at org.eclipse.lemminx.extensions.maven.MavenProjectCache.getSnapshotProject(MavenProjectCache.java:149) at org.eclipse.lemminx.extensions.maven.MavenLemminxWorkspaceReader$ResolveArtifactsAndPopulateWorkspaceRunnable.run(MavenLemminxWorkspaceReader.java:88) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:833) Suppressed: java.lang.IllegalStateException: Attempt 1: Could not acquire write lock for 'artifact:mygroup:root:0.0.1-SNAPSHOT' in 30 SECONDS at org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire(NamedLockFactoryAdapter.java:202) ... 17 more Suppressed: java.lang.IllegalStateException: Attempt 2: Could not acquire write lock for 'artifact:mygroup:root:0.0.1-SNAPSHOT' in 30 SECONDS at org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire(NamedLockFactoryAdapter.java:202) ... 17 more ``` was (Author: vrubezhny): Note that this never happened with v.1.9.12 - there probably were some problems with resolve (at least I suspect so), but NOT that serious - at least I haven't seen locking problems for quite a long time. I tried (from Lemminx-Maven side) to exclude the resolving for Maven project dependencies (by `setResolveDependencies(false)` on `ProjectBuildingRequest` used when building a project) - this has made the stacktrace shorter, but still `NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire()` is invoked and threw `IllegalStateException` the same number of cases. > With v.1.9.13 70% of acquire lock attempts end up with > java.lang.IllegalStateException: Could not acquire lock(s) > ----------------------------------------------------------------------------------------------------------------- > > Key: MRESOLVER-374 > URL: https://issues.apache.org/jira/browse/MRESOLVER-374 > Project: Maven Resolver > Issue Type: Bug > Components: Resolver > Affects Versions: 1.9.13 > Reporter: Victor Rubezhny > Priority: Major > > While trying to update the maven resolver dependency of Lemminx-Maven project > to v. 1.9.13 we faced the following problem - > [https://github.com/eclipse/lemminx-maven/pull/422] > With version v.1.9.13 more than 70% of attempts to build a Maven Project end > up with getting `.IllegalStateException: Could not acquire lock(s)` exception: > > ``` > Jun 23, 2023 2:23:02 PM > org.eclipse.lemminx.extensions.maven.MavenProjectCache parseAndCache > SEVERE: Could not acquire lock(s) > java.lang.IllegalStateException: Could not acquire lock(s) > at > org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire(NamedLockFactoryAdapter.java:219) > at > org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:271) > at > org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:259) > at > org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:242) > at > org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:231) > at > org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:172) > at > org.eclipse.aether.internal.impl.collect.df.DfDependencyCollector.resolveCachedArtifactDescriptor(DfDependencyCollector.java:382) > at > org.eclipse.aether.internal.impl.collect.df.DfDependencyCollector.getArtifactDescriptorResult(DfDependencyCollector.java:368) > at > org.eclipse.aether.internal.impl.collect.df.DfDependencyCollector.processDependency(DfDependencyCollector.java:218) > at > org.eclipse.aether.internal.impl.collect.df.DfDependencyCollector.processDependency(DfDependencyCollector.java:156) > at > org.eclipse.aether.internal.impl.collect.df.DfDependencyCollector.process(DfDependencyCollector.java:138) > at > org.eclipse.aether.internal.impl.collect.df.DfDependencyCollector.doCollectDependencies(DfDependencyCollector.java:108) > at > org.eclipse.aether.internal.impl.collect.DependencyCollectorDelegate.collectDependencies(DependencyCollectorDelegate.java:222) > at > org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:87) > at > org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies(DefaultRepositorySystem.java:305) > at > org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:151) > at > org.apache.maven.project.DefaultProjectBuilder.resolveDependencies(DefaultProjectBuilder.java:224) > at > org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:202) > at > org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:139) > at > org.eclipse.lemminx.extensions.maven.MavenProjectCache.parseAndCache(MavenProjectCache.java:159) > at > org.eclipse.lemminx.extensions.maven.MavenProjectCache.parseAndCache(MavenProjectCache.java:240) > at > org.eclipse.lemminx.extensions.maven.MavenProjectCache.check(MavenProjectCache.java:130) > at > org.eclipse.lemminx.extensions.maven.MavenProjectCache.getLastSuccessfulMavenProject(MavenProjectCache.java:105) > at > org.eclipse.lemminx.extensions.maven.MavenLemminxWorkspaceReader$ResolveArtifactsAndPopulateWorkspaceRunnable.run(MavenLemminxWorkspaceReader.java:79) > at > java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) > at > java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) > at java.base/java.lang.Thread.run(Thread.java:833) > Suppressed: java.lang.IllegalStateException: Attempt 1: Could not acquire > write lock for 'artifact:org.test.modules:ModuleA:0.0.1-SNAPSHOT' in 30 > SECONDS > at > org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire(NamedLockFactoryAdapter.java:202) > ... 26 more > Suppressed: java.lang.IllegalStateException: Attempt 2: Could not acquire > write lock for 'artifact:org.test.modules:ModuleA:0.0.1-SNAPSHOT' in 30 > SECONDS > at > org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire(NamedLockFactoryAdapter.java:202) > ... 26 more > ``` > > Every such failing attempt to acquire a lock takes ~60 seconds to finish > (fail) - while normally a test Maven Project (from Lemminx-Maven JUnit tests) > takes 5-50 ms to resolve. > > So building and running JUnit tests with maven-resolver v.1.9.13 took 3h 16m > while it normally takes about 7m 30s to finish. > Not a single `ProjectBuildingException` is returned during the tests so no > recovery is possible for the projects that cannot be built for various > reasons, as well as we don't have any statistics on how many "good and > buildable' vs. `bad and not buildable` projects build attempts were ended up > with that `lock failure` > > Every `IllegalStateException` happened in > `org.eclipse.lemminx.extensions.maven.MavenLemminxWorkspaceReader` which > loads (tried to build and cache information on workspace projects) at > Lemminx-Maven (Lemminx Language Server) extension startup. The workspace > projects are built one by one (not in parallel) trying to build parent > projects first and child projects after all they parents are built. (but not > controlling the built results - as it's quite possible that projects being > edited may have errors). > > -- This message was sent by Atlassian Jira (v8.20.10#820010)