Details
-
Type:
Bug
-
Status: Closed
-
Priority:
Major
-
Resolution: Duplicate
-
Affects Version/s: 3.15.0, 3.15.1, 3.15.2
-
Fix Version/s: 3.16.0
-
Labels:
Description
For instances with a large number of Maven repositories/components and nested group repositories, slow performance and increased CPU usage are observed when performing UI search. This is observed particularly when performing a Maven format search (UI -> Search -> Maven) which can result in a UI timeout.
Symptom Example Thread
The main bottleneck in this case revolves around code in org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl.findContainingGroups.
"elasticsearch[2495741E-FA123881-75320D5A-3CF67A37-ED6EBD5C][search][T#7]" #288 daemon prio=5 os_prio=0 tid=0x00007faed0034000 nid=0x1be runnable [0x00007fae94e95000] java.lang.Thread.State: RUNNABLE at org.sonatype.nexus.common.stateguard.GuardedInterceptor.invoke(GuardedInterceptor.java:53) at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:77) at com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:55) at org.sonatype.nexus.repository.maven.internal.group.MavenGroupFacet$$EnhancerByGuice$$563c2aa5.member(<generated>) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl.lambda$15(RepositoryManagerImpl.java:436) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl$$Lambda$412/1057757139.test(Unknown Source) at java.util.Optional.filter(Optional.java:178) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl.lambda$3(RepositoryManagerImpl.java:436) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl$$Lambda$410/265697578.test(Unknown Source) at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174) at java.util.concurrent.ConcurrentHashMap$ValueSpliterator.forEachRemaining(ConcurrentHashMap.java:3566) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl.findContainingGroups(RepositoryManagerImpl.java:438) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl.lambda$6(RepositoryManagerImpl.java:445) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl$$Lambda$415/1397390942.accept(Unknown Source) at java.util.ArrayList.forEach(ArrayList.java:1257) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl.findContainingGroups(RepositoryManagerImpl.java:445) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl.lambda$6(RepositoryManagerImpl.java:445) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl$$Lambda$415/1397390942.accept(Unknown Source) at java.util.ArrayList.forEach(ArrayList.java:1257) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl.findContainingGroups(RepositoryManagerImpl.java:445) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl.findContainingGroups(RepositoryManagerImpl.java:419) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl$$EnhancerByGuice$$d8f802b5.CGLIB$findContainingGroups$3(<generated>) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl$$EnhancerByGuice$$d8f802b5$$FastClassByGuice$$f4ae3230.invoke(<generated>) at com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228) at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:76) at org.sonatype.nexus.common.stateguard.MethodInvocationAction.run(MethodInvocationAction.java:39) at org.sonatype.nexus.common.stateguard.StateGuard$GuardImpl.run(StateGuard.java:272) at org.sonatype.nexus.common.stateguard.GuardedInterceptor.invoke(GuardedInterceptor.java:53) at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:77) at com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:55) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl$$EnhancerByGuice$$d8f802b5.findContainingGroups(<generated>) at org.sonatype.nexus.repository.selector.internal.ContentAuthPluginScript.run(ContentAuthPluginScript.java:85)