-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Low
-
None
-
Affects Version/s: 6.7.3, 7.4.3, 7.11.2
-
Component/s: Data Center - Core, Other, User - Management
-
None
-
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
- Run Confluence in DC mode
- Set up LDAP using this how to.
- Connect Confluence to LDAP directory
- Create new user and group (which contains new user) in LDAP
- Go to Directories admin panel
- 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:
- Restart Confluence (on all nodes) and try the LDAP sync again.
- 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:
- Reduce the sync time to 5 minutes
- Go to Logging and Profiling
- Add the following class with DEBUG level: com.atlassian.crowd.manager
- Save the changes
- Wait for the auto-sync time (5 minutes as per step 1)
- Please generate a support.zip and open a support incident