Uploaded image for project: 'Confluence Data Center'
  1. Confluence Data Center
  2. CONFSERVER-22676

Directory synchronization fail due to membership duplicated

    XMLWordPrintable

Details

    Description

      Problem

      The directory synchronization fail showing at the log an error informing duplicated membership, as the following message:

      2011-06-07 14:31:13,320 ERROR [QuartzScheduler_Worker-9] [atlassian.crowd.directory.DbCachingDirectoryPoller] pollChanges Error occurred while refreshing the cache for directory [ 2392065 ].
      java.lang.IllegalStateException: Found duplicate memberships for user in directory 2392065, group Test_group, user TestUser
      	at com.atlassian.crowd.embedded.hibernate2.HibernateMembershipDao$1.doInHibernate(HibernateMembershipDao.java:150)
      	at org.springframework.orm.hibernate.HibernateTemplate.execute(HibernateTemplate.java:370)
      	at org.springframework.orm.hibernate.HibernateTemplate.execute(HibernateTemplate.java:337)
      	at com.atlassian.crowd.embedded.hibernate2.HibernateMembershipDao.internalFindUserMembership(HibernateMembershipDao.java:137)
      	at com.atlassian.crowd.embedded.hibernate2.HibernateMembershipDao.removeUserFromGroup(HibernateMembershipDao.java:109)
      	at com.atlassian.confluence.user.crowd.CachedCrowdMembershipDao.removeUserFromGroup(CachedCrowdMembershipDao.java:93)
      	at com.atlassian.crowd.directory.AbstractInternalDirectory.removeUserFromGroup(AbstractInternalDirectory.java:718)
      	at com.atlassian.crowd.directory.DbCachingRemoteChangeOperations.removeUserMembershipsForGroup(DbCachingRemoteChangeOperations.java:684)
      	at sun.reflect.GeneratedMethodAccessor389.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      	at java.lang.reflect.Method.invoke(Method.java:597)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
      	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 com.atlassian.crowd.directory.$Proxy713.removeUserMembershipsForGroup(Unknown Source)
      	at com.atlassian.crowd.directory.DirectoryCacheImplUsingChangeOperations.syncUserMembershipsForGroup(DirectoryCacheImplUsingChangeOperations.java:117)
      	at com.atlassian.crowd.directory.ldap.cache.AbstractCacheRefresher.synchroniseMembershipsForGroup(AbstractCacheRefresher.java:126)
      	at com.atlassian.crowd.directory.ldap.cache.AbstractCacheRefresher.synchroniseMemberships(AbstractCacheRefresher.java:63)
      	at com.atlassian.crowd.directory.ldap.cache.AbstractCacheRefresher.synchroniseAll(AbstractCacheRefresher.java:37)
      	at com.atlassian.crowd.directory.DbCachingRemoteDirectory.synchroniseCache(DbCachingRemoteDirectory.java:645)
      	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:14)
      	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
      

      The duplicated membership can be confirmed running this query:

      SELECT u.user_name, g.group_name FROM cwd_user u, cwd_group g, cwd_membership m WHERE u.id = m.child_user_id AND g.id = m.parent_id AND u.user_name = '?';
      

      Note: Where ? is the username mentioned at the error message.

      This query returns a result as following:

      mysql> SELECT u.user_name, g.group_name FROM cwd_user u, cwd_group g, cwd_membership m WHERE u.id = m.child_user_id AND g.id = m.parent_id AND u.user_name = 'TestUser';
      +-----------+------------+
      | user_name | group_name |
      +-----------+------------+
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      | TestUser    | Test_group  | 
      +-----------+------------+
      175 rows in set (0.00 sec)
      

      Fix

      There is none yet.

      Workaround

      Disable and remove the Directory on Confluence User directories link, restart your Confluence instance, then recreate the Directory again.

      Attachments

        Activity

          People

            vchoy Vincent Choy (Inactive)
            tcomasseto Tiago Comasseto
            Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: