[
https://issues.apache.org/jira/browse/MRESOLVER-374?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Tamas Cservenak closed MRESOLVER-374.
-------------------------------------
Resolution: Won't Fix
As reporter explains, this was more his code.
In short, resolver regarding locking has some expectations, that has to be met,
to be able to guarantee proper working.
> 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)