Could not synchronise transactional cache [com.atlassian.confluence.user.crowd.CachedCrowdUserDao.USER_CACHE]. Attempting flush instead

XMLWordPrintable

    • 20
    • Severity 3 - Minor
    • 3

      Summary

      The following message will accompany some LDAP syncs:

      Could not synchronise transactional cache [com.atlassian.confluence.user.crowd.CachedCrowdUserDao.USER_CACHE]. Attempting flush instead.

      Environment

      Data Center

      Steps to Reproduce

      1. Run Confluence in DC mode
      2. Set up LDAP using this how to.
      3. Connect Confluence to LDAP directory
      4. Create new user and group (which contains new user) in LDAP
      5. Go to Directories admin panel
      6. Click "Synchronise"

      IMPORTANT: Defect is reproducible only during the first synchronization, after new user and group are added. You need to create new user and group every time you want to reproduce this bug.

      Expected Results

      Confluence will sync with its LDAP source without error. 

      Actual Results

      The following will be seen in the application log accompanying an LDAP sync:

      2021-08-30 21:45:42,905 ERROR [Caesium-1-3] [atlassian.confluence.cache.TransactionalCacheFactory] handleCacheSynchronizationFailure Could not synchronise transactional cache [com.atlassian.confluence.user.crowd.CachedCrowdUserDao.USER_CACHE]. Attempting flush instead. com.hazelcast.nio.serialization.HazelcastSerializationException: Failed to serialize 'com.atlassian.hazelcast.serialization.OsgiSafe' at com.hazelcast.internal.serialization.impl.SerializationUtil.handleSerializeException(SerializationUtil.java:75) at com.hazelcast.internal.serialization.impl.AbstractSerializationService.toBytes(AbstractSerializationService.java:157) at com.hazelcast.internal.serialization.impl.AbstractSerializationService.toBytes(AbstractSerializationService.java:133) at com.hazelcast.internal.serialization.impl.AbstractSerializationService.toData(AbstractSerializationService.java:118) at com.hazelcast.internal.serialization.impl.AbstractSerializationService.toData(AbstractSerializationService.java:106) at com.hazelcast.spi.impl.NodeEngineImpl.toData(NodeEngineImpl.java:318) at com.hazelcast.spi.AbstractDistributedObject.toData(AbstractDistributedObject.java:68) at com.hazelcast.map.impl.proxy.MapProxyImpl.put(MapProxyImpl.java:133) at com.hazelcast.map.impl.proxy.MapProxyImpl.put(MapProxyImpl.java:125) at com.atlassian.cache.hazelcast.HazelcastCache.put(HazelcastCache.java:113) at com.atlassian.confluence.cache.DefaultConfluenceCache.put(DefaultConfluenceCache.java:58) at com.atlassian.confluence.cache.ConfluenceMonitoringCache.put(ConfluenceMonitoringCache.java:88) at com.atlassian.confluence.cache.CacheOperations$PutOperation.perform(CacheOperations.java:69) at com.atlassian.confluence.cache.CacheOperations.perform(CacheOperations.java:167) at com.atlassian.confluence.cache.DeferredOperationsCache.sync(DeferredOperationsCache.java:182) at com.atlassian.confluence.cache.TransactionalCacheFactory$DelegateCacheSynchronization.synchronizeCache(TransactionalCacheFactory.java:252) at com.atlassian.confluence.cache.TransactionalCacheFactory$DelegateCacheSynchronization.synchronizeCaches(TransactionalCacheFactory.java:231) at com.atlassian.confluence.cache.TransactionalCacheFactory$DelegateCacheSynchronization.afterCompletion(TransactionalCacheFactory.java:218) at org.springframework.transaction.support.TransactionSynchronizationUtils.invokeAfterCompletion(TransactionSynchronizationUtils.java:171) at org.springframework.transaction.support.AbstractPlatformTransactionManager.invokeAfterCompletion(AbstractPlatformTransactionManager.java:992) at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion(AbstractPlatformTransactionManager.java:967) at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:788) at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:714) at jdk.internal.reflect.GeneratedMethodAccessor86.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:205) at com.sun.proxy.$Proxy76.commit(Unknown Source) at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:534) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:305) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) at com.atlassian.crowd.directory.$Proxy3165.addUserMembershipsForGroup(Unknown Source) at com.atlassian.crowd.directory.DirectoryCacheImplUsingChangeOperations.syncUserMembersForGroup(DirectoryCacheImplUsingChangeOperations.java:111) at com.atlassian.crowd.directory.ldap.cache.AbstractCacheRefresher.synchroniseMemberships(AbstractCacheRefresher.java:184) at com.atlassian.crowd.directory.ldap.cache.UsnChangedCacheRefresher.synchroniseGroupChanges(UsnChangedCacheRefresher.java:355) at com.atlassian.crowd.directory.ldap.cache.UsnChangedCacheRefresher.synchroniseChanges(UsnChangedCacheRefresher.java:113) at com.atlassian.crowd.directory.DbCachingRemoteDirectory.synchroniseCache(DbCachingRemoteDirectory.java:960) at com.atlassian.crowd.manager.directory.DirectorySynchroniserImpl.synchronise(DirectorySynchroniserImpl.java:67) at com.atlassian.crowd.directory.DbCachingDirectoryPoller.pollChanges(DbCachingDirectoryPoller.java:45) at com.atlassian.crowd.manager.directory.monitor.poller.DirectoryPollerJobRunner.runJob(DirectoryPollerJobRunner.java:85) at com.atlassian.confluence.impl.schedule.caesium.JobRunnerWrapper.doRunJob(JobRunnerWrapper.java:132) at com.atlassian.confluence.impl.schedule.caesium.JobRunnerWrapper.lambda$runJob$0(JobRunnerWrapper.java:87) at com.atlassian.confluence.impl.vcache.VCacheRequestContextManager.doInRequestContextInternal(VCacheRequestContextManager.java:84) at com.atlassian.confluence.impl.vcache.VCacheRequestContextManager.doInRequestContext(VCacheRequestContextManager.java:68) at com.atlassian.confluence.impl.schedule.caesium.JobRunnerWrapper.runJob(JobRunnerWrapper.java:87) at com.atlassian.scheduler.core.JobLauncher.runJob(JobLauncher.java:134) at com.atlassian.scheduler.core.JobLauncher.launchAndBuildResponse(JobLauncher.java:106) at com.atlassian.scheduler.core.JobLauncher.launch(JobLauncher.java:90) at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.launchJob(CaesiumSchedulerService.java:435) at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeClusteredJob(CaesiumSchedulerService.java:430) at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeClusteredJobWithRecoveryGuard(CaesiumSchedulerService.java:454) at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeQueuedJob(CaesiumSchedulerService.java:382) at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.executeJob(SchedulerQueueWorker.java:66) at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.executeNextJob(SchedulerQueueWorker.java:60) at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.run(SchedulerQueueWorker.java:35) at java.base/java.lang.Thread.run(Thread.java:829) Caused by: com.hazelcast.nio.serialization.HazelcastSerializationException: Failed to serialize 'io.atlassian.fugue.Option$Some' at com.hazelcast.internal.serialization.impl.SerializationUtil.handleSerializeException(SerializationUtil.java:75) at com.hazelcast.internal.serialization.impl.AbstractSerializationService.writeObject(AbstractSerializationService.java:254) at com.hazelcast.internal.serialization.impl.ByteArrayObjectDataOutput.writeObject(ByteArrayObjectDataOutput.java:376) at com.atlassian.hazelcast.serialization.OsgiSafeStreamSerializer.write(OsgiSafeStreamSerializer.java:122) at com.atlassian.hazelcast.serialization.OsgiSafeStreamSerializer.write(OsgiSafeStreamSerializer.java:63) at com.hazelcast.internal.serialization.impl.StreamSerializerAdapter.write(StreamSerializerAdapter.java:43) at com.hazelcast.internal.serialization.impl.AbstractSerializationService.toBytes(AbstractSerializationService.java:154) ... 57 more Caused by: java.io.IOException: unexpected exception type at java.base/java.io.ObjectStreamClass.throwMiscException(ObjectStreamClass.java:1641) at java.base/java.io.ObjectStreamClass.invokeWriteReplace(ObjectStreamClass.java:1241) at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1137) at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1553) at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1510) at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433) at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179) at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1553) at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1510) at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433) at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179) at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:349) at com.hazelcast.internal.serialization.impl.JavaDefaultSerializers$JavaSerializer.write(JavaDefaultSerializers.java:114) at com.hazelcast.internal.serialization.impl.JavaDefaultSerializers$JavaSerializer.write(JavaDefaultSerializers.java:107) at com.hazelcast.internal.serialization.impl.StreamSerializerAdapter.write(StreamSerializerAdapter.java:43) at com.hazelcast.internal.serialization.impl.AbstractSerializationService.writeObject(AbstractSerializationService.java:252) ... 62 more Caused by: java.lang.Exception at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:70) at com.atlassian.hibernate.adapter.proxy.JavassistLazyInitializer_ImplementV2Proxy.invoke(JavassistLazyInitializer_ImplementV2Proxy.java:68) at com.atlassian.crowd.model.directory.DirectoryImpl_$$_jvsta03_d.writeReplace(DirectoryImpl_$$_jvsta03_d.java) at jdk.internal.reflect.GeneratedMethodAccessor5342.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at java.base/java.io.ObjectStreamClass.invokeWriteReplace(ObjectStreamClass.java:1235) ... 76 more
      

      Workaround

      This un-serialization error can be safely ignored in this instance, it will not prevent the LDAP sync from working. 

      To resolve the error message

      Try the following:

      1. Restart Confluence (on all nodes) and try the LDAP sync again.
      2. If it fails, disable and re-enable the user directory associated with this LDAP sync

      If the problem persists after restarting, please proceed as follows:

      1. Reduce the sync time to 5 minutes
      2. Go to Logging and Profiling
      3. Add the following class with DEBUG level: com.atlassian.crowd.manager 
      4. Save the changes
      5. Wait for the auto-sync time (5 minutes as per step 1)
      6. Please generate a support.zip and open a support incident 

            Assignee:
            Unassigned
            Reporter:
            Andrew S (Inactive)
            Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: