Uploaded image for project: 'Dev - Nexus Repo'
  1. Dev - Nexus Repo
  2. NEXUS-28581

NuGet Group v3 500 Errors due to CooperationException Thread cooperation maxed for index.json 100 threads cooperating

    Details

    • Type: Bug
    • Status: New
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 3.32.0, 3.33.0, 3.35.0, 3.36.0
    • Fix Version/s: None
    • Component/s: nuget-v3
    • Notability:
      3

      Description

      Hello, from time to time we have 500 errors from Nexus when dotnet restores packages

      Nothing interesting in the request.log (only full path and 500 status code as an server anwser)

      But nexus.log gives a hint:
      2021-08-05 09:32:59,801+0500 WARN [qtp1812335831-963943] *UNKNOWN org.sonatype.nexus.repository.httpbridge.internal.ViewServlet - Failure servicing: GET /repository/nuget/v3/content/portal.client.sd/index.json
      org.sonatype.nexus.common.io.CooperationException: Thread cooperation maxed for /index.json?{} (100 threads cooperating)
      at org.sonatype.nexus.common.io.CooperatingFuture.lambda$0(CooperatingFuture.java:188)
      at java.util.concurrent.atomic.AtomicInteger.getAndUpdate(AtomicInteger.java:222)
      at org.sonatype.nexus.common.io.CooperatingFuture.increaseCooperation(CooperatingFuture.java:185)
      at org.sonatype.nexus.common.io.CooperatingFuture.cooperate(CooperatingFuture.java:71)
      at org.sonatype.nexus.common.io.ScopedCooperationFactorySupport$ScopedCooperation.cooperate(ScopedCooperationFactorySupport.java:106)
      at org.sonatype.nexus.repository.proxy.ProxyFacetSupport.get(ProxyFacetSupport.java:250)
      at org.sonatype.nexus.repository.proxy.ProxyFacetSupport.get(ProxyFacetSupport.java:239)
      at com.sonatype.nexus.repository.nuget.orient.internal.v3.OrientNugetV3ProxyFacetImpl.getServiceIndex(OrientNugetV3ProxyFacetImpl.java:94)
      at com.sonatype.nexus.repository.nuget.internal.v3.NugetV3GroupHelper.getServiceIndex(NugetV3GroupHelper.java:112)
      at com.sonatype.nexus.repository.nuget.internal.v3.NugetV3GroupHelper.getPaths(NugetV3GroupHelper.java:94)
      at com.sonatype.nexus.repository.nuget.internal.v3.NugetV3GroupHelper.lambda$2(NugetV3GroupHelper.java:86)
      at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
      at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1384)
      at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
      at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
      at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
      at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
      at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566)
      at com.sonatype.nexus.repository.nuget.internal.v3.NugetV3GroupHelper.getMembersServiceTypePaths(NugetV3GroupHelper.java:87)
      at com.sonatype.nexus.repository.nuget.internal.v3.NugetV3GroupHelper.getMembersRequestPaths(NugetV3GroupHelper.java:52)
      at com.sonatype.nexus.repository.nuget.internal.v3.NugetV3GroupAbstractHandler.createRequestsToMembers(NugetV3GroupAbstractHandler.java:109)
      at com.sonatype.nexus.repository.nuget.internal.v3.NugetV3GroupAbstractHandler.getRepositoryPayloads(NugetV3GroupAbstractHandler.java:60)
      at com.sonatype.nexus.repository.nuget.internal.v3.NugetV3GroupPackageVersionsHandler.doGet(NugetV3GroupPackageVersionsHandler.java:50)
      at org.sonatype.nexus.repository.group.GroupHandler.handle(GroupHandler.java:100)
      at org.sonatype.nexus.repository.view.Context.proceed(Context.java:88)
      at com.sonatype.nexus.repository.nuget.internal.NugetSimpleHandlers.lambda$1(NugetSimpleHandlers.java:33)
      at org.sonatype.nexus.repository.view.Context.proceed(Context.java:88)
      at com.sonatype.nexus.repository.nuget.internal.NugetGroupVersionHandler.handle(NugetGroupVersionHandler.java:71)
      at org.sonatype.nexus.repository.view.Context.proceed(Context.java:88)
      at org.sonatype.nexus.repository.storage.UnitOfWorkHandler.handle(UnitOfWorkHandler.java:39)
      at org.sonatype.nexus.repository.view.Context.proceed(Context.java:88)
      at org.sonatype.nexus.repository.routing.internal.RoutingRuleHandler.handle(RoutingRuleHandler.java:52)
      at org.sonatype.nexus.repository.view.Context.proceed(Context.java:88)
      at org.sonatype.nexus.repository.security.SecurityHandler.handle(SecurityHandler.java:51)
      at org.sonatype.nexus.repository.view.Context.proceed(Context.java:88)
      at com.sonatype.analytics.internal.handler.AnalyticsMeteringHandler.handle(AnalyticsMeteringHandler.java:69)
      at org.sonatype.nexus.repository.view.Context.proceed(Context.java:88)
      at org.sonatype.nexus.repository.view.handlers.TimingHandler.handle(TimingHandler.java:58)
      at org.sonatype.nexus.repository.view.Context.proceed(Context.java:88)
      at org.sonatype.nexus.repository.view.Context.start(Context.java:179)
      at org.sonatype.nexus.repository.view.Router.dispatch(Router.java:65)
      at org.sonatype.nexus.repository.view.ConfigurableViewFacet.dispatch(ConfigurableViewFacet.java:52)
      at org.sonatype.nexus.repository.view.ConfigurableViewFacet.dispatch(ConfigurableViewFacet.java:43)
      at org.sonatype.nexus.repository.httpbridge.internal.ViewServlet.dispatchAndSend(ViewServlet.java:213)
      at org.sonatype.nexus.repository.httpbridge.internal.ViewServlet.doService(ViewServlet.java:175)
      at org.sonatype.nexus.repository.httpbridge.internal.ViewServlet.service(ViewServlet.java:127)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
      at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:290)
      at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:280)
       

      So as error supposes we have reached limit of threads that working with this resource (I suppose). Is it configurable somehow? Any workaround on this? Out NuGet-repos under a pretty heavy load. 

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              Unassigned Unassigned
              Reporter:
              Dimis Dmitry
              Last Updated By:
              Peter Lynch Peter Lynch
              Votes:
              9 Vote for this issue
              Watchers:
              11 Start watching this issue

                Dates

                Created:
                Updated:
                Date of First Response:

                  tigCommentSecurity.panel-title