LDAP synchronization fails
Asked by Robin Garner:

We have upgraded from confluence 3.5 with LDAP authentication and local groups.

Now when we try to synchronize with the directory it fails with the following stack trace in catalina.log.

2012-11-12 16:36:55,713 ERROR \[scheduler_Worker-2\] \[atlassian.crowd.directory.DbCachingDirectoryPoller\] pollChanges Error occurred while refreshing the cache for directory \[ 8257537 \].

com.atlassian.crowd.exception.OperationFailedException: org.springframework.ldap.SizeLimitExceededException: \[LDAP: error code 4 - Sizelimit Exceeded\]; nested exception is javax.naming.SizeLimitExceededException: \[LDAP: error code 4 - Sizelimit Exceeded\]; remaining name 'ou=Staff,o=scu.edu.au,dc=scu,dc=edu,dc=au'

at com.atlassian.crowd.directory.SpringLDAPConnector.searchEntitiesWithRequestControls(SpringLDAPConnector.java:416)

at com.atlassian.crowd.directory.SpringLDAPConnector.searchEntities(SpringLDAPConnector.java:384)

at com.atlassian.crowd.directory.SpringLDAPConnector.searchUserObjects(SpringLDAPConnector.java:574)

at com.atlassian.crowd.directory.SpringLDAPConnector.searchUsers(SpringLDAPConnector.java:943)

at com.atlassian.crowd.directory.ldap.cache.RemoteDirectoryCacheRefresher.findAllRemoteUsers(RemoteDirectoryCacheRefresher.java:41)

at com.atlassian.crowd.directory.ldap.cache.RemoteDirectoryCacheRefresher.synchroniseAllUsers(RemoteDirectoryCacheRefresher.java:60)

at com.atlassian.crowd.directory.ldap.cache.AbstractCacheRefresher.synchroniseAll(AbstractCacheRefresher.java:40)

at com.atlassian.crowd.directory.DbCachingRemoteDirectory.synchroniseCache(DbCachingRemoteDirectory.java:621)

at com.atlassian.crowd.manager.directory.DirectorySynchroniserImpl.synchronise(DirectorySynchroniserImpl.java:63)

at com.atlassian.crowd.directory.DbCachingDirectoryPoller.pollChanges(DbCachingDirectoryPoller.java:50)

at com.atlassian.crowd.manager.directory.monitor.poller.DirectoryPollerJobBean.executeInternal(DirectoryPollerJobBean.java:29)

at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)

at org.quartz.core.JobRunShell.run(JobRunShell.java:199)

at com.atlassian.confluence.schedule.quartz.ConfluenceQuartzThreadPool$1.run(ConfluenceQuartzThreadPool.java:20)

at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)

Caused by: org.springframework.ldap.SizeLimitExceededException: \[LDAP: error code 4 - Sizelimit Exceeded\]; nested exception is javax.naming.SizeLimitExceededException: \[LDAP: error code 4 - Sizelimit Exceeded\]; remaining name 'ou=Staff,o=scu.edu.au,dc=scu,dc=edu,dc=au'

at org.springframework.ldap.support.LdapUtils.convertLdapException(LdapUtils.java:146)

at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:319)

at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:237)

at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:624)

at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:535)

at com.atlassian.crowd.directory.ldap.LdapTemplateWithClassLoaderWrapper$1.call(LdapTemplateWithClassLoaderWrapper.java:56)

at com.atlassian.crowd.directory.ldap.LdapTemplateWithClassLoaderWrapper$1.call(LdapTemplateWithClassLoaderWrapper.java:53)

at com.atlassian.crowd.directory.ldap.LdapTemplateWithClassLoaderWrapper.invokeWithContextClassLoader(LdapTemplateWithClassLoaderWrapper.java:43)

at com.atlassian.crowd.directory.ldap.LdapTemplateWithClassLoaderWrapper.search(LdapTemplateWithClassLoaderWrapper.java:53)

at com.atlassian.crowd.directory.SpringLDAPConnector.searchEntitiesWithRequestControls(SpringLDAPConnector.java:412)

... 14 more

Caused by: javax.naming.SizeLimitExceededException: \[LDAP: error code 4 - Sizelimit Exceeded\]; remaining name 'ou=Staff,o=scu.edu.au,dc=scu,dc=edu,dc=au'

at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3093)

at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2987)

at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2794)

at com.sun.jndi.ldap.LdapNamingEnumeration.getNextBatch(LdapNamingEnumeration.java:129)

at com.sun.jndi.ldap.LdapNamingEnumeration.hasMoreImpl(LdapNamingEnumeration.java:198)

at com.sun.jndi.ldap.LdapNamingEnumeration.hasMore(LdapNamingEnumeration.java:171)

at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:295)

... 22 more


Answers:
author: Robin Garner
body: The LDAP directory has grown - the limit was the LDAP search size limit. Fixed by increasing the bind DN's search size limit.