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

Repository browse UI is very slow for non-admin users if there are large numbers of content selector privileges

    Details

      Description

      Making heavy use of content selector privileges causes rendering of the repository browse list to become very slow for non-admin users. Nexus is iterating over all content selectors privileges for each repository to determine if it should be shown to the user.

      Using content selector privileges to partition access to repositories is our recommended way of scaling access to many different groups within an organization.

       

      "pool-21-thread-3" #476 prio=5 os_prio=31 tid=0x00007fdc681fb800 nid=0xe703 runnable [0x000070000c2c7000]
       java.lang.Thread.State: RUNNABLE
       at java.util.AbstractCollection.containsAll(AbstractCollection.java:317)
       at org.apache.shiro.authz.permission.WildcardPermission.implies(WildcardPermission.java:217)
       at org.apache.shiro.realm.AuthorizingRealm.isPermitted(AuthorizingRealm.java:471)
       at org.apache.shiro.realm.AuthorizingRealm.isPermitted(AuthorizingRealm.java:463)
       at org.sonatype.nexus.security.authz.ExceptionCatchingModularRealmAuthorizer.isPermitted(ExceptionCatchingModularRealmAuthorizer.java:206)
       at org.apache.shiro.mgt.AuthorizingSecurityManager.isPermitted(AuthorizingSecurityManager.java:117)
       at org.apache.shiro.subject.support.DelegatingSubject.isPermitted(DelegatingSubject.java:162)
       at org.sonatype.nexus.security.SecurityHelper.anyPermitted(SecurityHelper.java:98)
       at org.sonatype.nexus.security.SecurityHelper.anyPermitted(SecurityHelper.java:116)
       at sun.reflect.GeneratedMethodAccessor280.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:498)
       at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSite.invoke(PojoMetaMethodSite.java:192)
       at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:56)
       at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
       at org.sonatype.nexus.coreui.RepositoryComponent$_applyPermissions_closure17$_closure21.doCall(RepositoryComponent.groovy:388)
       at sun.reflect.GeneratedMethodAccessor281.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:498)
       at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
       at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
       at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294)
       at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
       at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42)
       at org.codehaus.groovy.runtime.callsite.BooleanReturningMethodInvoker.invoke(BooleanReturningMethodInvoker.java:51)
       at org.codehaus.groovy.runtime.callsite.BooleanClosureWrapper.call(BooleanClosureWrapper.java:53)
       at org.codehaus.groovy.runtime.DefaultGroovyMethods.find(DefaultGroovyMethods.java:3934)
       at org.codehaus.groovy.runtime.dgm$193.invoke(Unknown Source)
       at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:274)
       at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:56)
       at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
       at org.sonatype.nexus.coreui.RepositoryComponent$_applyPermissions_closure17.doCall(RepositoryComponent.groovy:386)
       at sun.reflect.GeneratedMethodAccessor283.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:498)
       at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
       at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
       at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294)
       at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
       at groovy.lang.Closure.call(Closure.java:414)
       at groovy.lang.Closure.call(Closure.java:430)
       at org.codehaus.groovy.runtime.DefaultGroovyMethods.findResults(DefaultGroovyMethods.java:4060)
       at org.codehaus.groovy.runtime.dgm$218.invoke(Unknown Source)
       at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:274)
       at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:56)
       at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
       at org.sonatype.nexus.coreui.RepositoryComponent.applyPermissions(RepositoryComponent.groovy:377)
       at org.sonatype.nexus.coreui.RepositoryComponent$applyPermissions.callCurrent(Unknown Source)
       at org.sonatype.nexus.coreui.RepositoryComponent.filter(RepositoryComponent.groovy:368)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:498)
       at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210)
       at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59)
       at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)
       at org.sonatype.nexus.coreui.RepositoryComponent.readReferences(RepositoryComponent.groovy:154)
       at org.sonatype.nexus.coreui.RepositoryComponent$$EnhancerByGuice$$2d5d77ae.CGLIB$readReferences$14(<generated>)
       at org.sonatype.nexus.coreui.RepositoryComponent$$EnhancerByGuice$$2d5d77ae$$FastClassByGuice$$6e3a8a05.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 com.palominolabs.metrics.guice.ExceptionMeteredInterceptor.invoke(ExceptionMeteredInterceptor.java:49)
       at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:77)
       at com.palominolabs.metrics.guice.TimedInterceptor.invoke(TimedInterceptor.java:47)
       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.coreui.RepositoryComponent$$EnhancerByGuice$$2d5d77ae.readReferences(<generated>)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:498)
       at com.softwarementors.extjs.djn.router.dispatcher.DispatcherBase.invokeJavaMethod(DispatcherBase.java:142)
       at com.softwarementors.extjs.djn.router.dispatcher.DispatcherBase.invokeMethod(DispatcherBase.java:133)
       at org.sonatype.nexus.extdirect.internal.ExtDirectServlet$3.invokeMethod(ExtDirectServlet.java:233)
       at com.softwarementors.extjs.djn.router.dispatcher.DispatcherBase.dispatch(DispatcherBase.java:63)
      

        Attachments

          Activity

            People

            Assignee:
            dbradicich Damian Bradicich
            Reporter:
            rseddon Rich Seddon
            Last Updated By:
            Peter Lynch Peter Lynch
            Team:
            Nexus - UX
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved:
              Date of First Response:

                tigCommentSecurity.panel-title