Having many users in EPP IDM causes root user login to take too long

Solution Verified - Updated -

Issue

While testing with 30 groups and ~3000 users who can be a member of any amount of these groups, there were no speed issues to speak of, but after increasing the user count to 60.000, logging in as root user suddenly takes as long as 20 minutes.

Inspecting a captured thread dump shows that the cause for the slowness is the call to org.exoplatform.services.organization.idm.GroupDAOImpl.getAllGroups, which apparently takes a long time:

java.lang.Class.getInterfaces(Native Method)
org.hibernate.intercept.FieldInterceptionHelper.isInstrumented(FieldInterceptionHelper.java:51)
org.hibernate.intercept.FieldInterceptionHelper.isInstrumented(FieldInterceptionHelper.java:62)
org.hibernate.engine.EntityEntry.requiresDirtyCheck(EntityEntry.java:259)
org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:141)
org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:219)
org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:99)
org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:58)
org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:999)
org.hibernate.impl.SessionImpl.list(SessionImpl.java:1185)
org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
org.picketlink.idm.impl.store.hibernate.HibernateIdentityStoreImpl.findIdentityObject(HibernateIdentityStoreImpl.java:889)
org.picketlink.idm.impl.repository.WrapperIdentityStoreRepository.findIdentityObject(WrapperIdentityStoreRepository.java:226)
org.picketlink.idm.impl.api.session.managers.RelationshipManagerImpl.findAssociatedGroups(RelationshipManagerImpl.java:946)
org.picketlink.idm.impl.api.session.managers.RelationshipManagerImpl.findAssociatedGroupsCascaded(RelationshipManagerImpl.java:861)
org.picketlink.idm.impl.api.session.managers.RelationshipManagerImpl.findAssociatedGroupsCascaded(RelationshipManagerImpl.java:876)
org.picketlink.idm.impl.api.session.managers.RelationshipManagerImpl.findAssociatedGroupsCascaded(RelationshipManagerImpl.java:876)
org.picketlink.idm.impl.api.session.managers.RelationshipManagerImpl.findAssociatedGroupsCascaded(RelationshipManagerImpl.java:876)
org.picketlink.idm.impl.api.session.managers.RelationshipManagerImpl.findAssociatedGroups(RelationshipManagerImpl.java:926)
org.picketlink.idm.impl.api.session.managers.RelationshipManagerImpl.findAssociatedGroups(RelationshipManagerImpl.java:1006)
org.exoplatform.services.organization.idm.GroupDAOImpl.getAllGroups(GroupDAOImpl.java:680)

Environment

  • JBoss Enterprise Portal Platform (EPP)
    • 5.2.1
    • 5.2.2

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content