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

Reply via email to