-
Suggestion
-
Resolution: Fixed
-
None
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)
- is caused by
-
CWD-2607 Crowd using high CPU due to Hibernate bug
-
- Closed
-