• Our product teams collect and evaluate feedback from a number of different sources. To learn more about how we use customer feedback in the planning process, check out our new feature policy.

      In high load situation the alias handling in searchPrincipals can become a bottleneck. The dirty check performed by Hibernate is unnecessary in this situation, and eliminating it would eliminate this bottleck.

      "http-8095-Processor245" daemon prio=1 tid=0x08baf258 nid=0x375c waiting for monitor entry [0x82404000..0x824060b0]
      	at java.util.Collections$SynchronizedMap.get(Collections.java:1979)
      	- waiting to lock <0xa1b58c50> (a java.util.Collections$SynchronizedMap)
      	at org.hibernate.tuple.EntityModeToTuplizerMapping.getTuplizerOrNull(EntityModeToTuplizerMapping.java:53)
      	at org.hibernate.tuple.EntityModeToTuplizerMapping.getTuplizer(EntityModeToTuplizerMapping.java:66)
      	at org.hibernate.type.ComponentType.getPropertyValues(ComponentType.java:353)
      	at org.hibernate.type.ComponentType.isDirty(ComponentType.java:224)
      	at org.hibernate.type.TypeFactory.findDirty(TypeFactory.java:597)
      	at org.hibernate.persister.entity.AbstractEntityPersister.findDirty(AbstractEntityPersister.java:3123)
      	at org.hibernate.event.def.DefaultFlushEntityEventListener.dirtyCheck(DefaultFlushEntityEventListener.java:479)
      	at org.hibernate.event.def.DefaultFlushEntityEventListener.isUpdateNecessary(DefaultFlushEntityEventListener.java:204)
      	at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:127)
      	at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:196)
      	at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
      	at org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:35)
      	at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:969)
      	at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1562)
      	at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
      	at org.hibernate.impl.CriteriaImpl.uniqueResult(CriteriaImpl.java:305)
      	at com.atlassian.crowd.model.alias.AliasDAOHibernate$1.doInHibernate(AliasDAOHibernate.java:38)
      	at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:374)
      	at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:339)
      	at com.atlassian.crowd.model.alias.AliasDAOHibernate.findAliasObjectByUsername(AliasDAOHibernate.java:34)
      	at com.atlassian.crowd.model.alias.AliasDAOHibernate.findAliasByUsername(AliasDAOHibernate.java:94)
      	at com.atlassian.crowd.manager.application.AliasManagerImpl.findAliasByUsername(AliasManagerImpl.java:48)
      	at sun.reflect.GeneratedMethodAccessor225.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      	at java.lang.reflect.Method.invoke(Method.java:585)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
      	at com.atlassian.spring.interceptors.SpringProfilingInterceptor.invoke(SpringProfilingInterceptor.java:20)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
      	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
      	at $Proxy12.findAliasByUsername(Unknown Source)
      	at com.atlassian.crowd.service.soap.SecurityServerGeneric.buildAliasedUsers(SecurityServerGeneric.java:518)
      	at com.atlassian.crowd.service.soap.SecurityServerGeneric.searchPrincipals(SecurityServerGeneric.java:468)
      

            [CWD-2054] Searching users when aliases are enabled is slow

            There are no comments yet on this issue.

              onevalainen Olli Nevalainen
              onevalainen Olli Nevalainen
              Votes:
              3 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved:

                  Estimated:
                  Original Estimate - 8h
                  8h
                  Remaining:
                  Remaining Estimate - 8h
                  8h
                  Logged:
                  Time Spent - Not Specified
                  Not Specified