Hibernate NotSerializableException and ArrayStoreException in Bamboo

Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.

Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Summary

Problem

NotSerializableExceptions and ArrayStoreExceptions from Hibernate are being thrown in the Bamboo logs or UI. Generally these exceptions will not cause any visible impact but are indicative of a problem that can cause poor performance. However, these exceptions can present to the UI and affect page rendering under certain circumstances.

Diagnosis

The presence of the below WARN level log is evidence of the Cause below:

1 2017-06-01 12:45:22,633 WARN [localhost-startStop-1] [ConfigurationFactory] No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath: jar:file:/opt/atlassian-bamboo-6.0.1/atlassian-bamboo/WEB-INF/lib/ehcache-2.7.5.jar!/ehcache-failsafe.xml

Stack traces similar to the following are found in <bamboo-install>/catalina.out or shown in the UI:

1 2 3 4 5 6 7 java.io.NotSerializableException: org.hibernate.persister.entity.SingleTableEntityPersister at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) ... at net.sf.ehcache.util.MemoryEfficientByteArrayOutputStream.serialize(MemoryEfficientByteArrayOutputStream.java:97) at net.sf.ehcache.store.disk.DiskStorageFactory.serializeElement(DiskStorageFactory.java:399) at net.sf.ehcache.store.disk.DiskStorageFactory.write(DiskStorageFactory.java:381
1 2 3 4 5 6 7 8 9 10 2017-06-12 10:15:27,791 ERROR [http-nio-8085-exec-7] [ExceptionMappingInterceptor] org.hibernate.property.access.spi.SetterMethodImpl$SerialForm java.lang.ArrayStoreException: org.hibernate.property.access.spi.SetterMethodImpl$SerialForm at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1919) ... at net.sf.ehcache.store.disk.DiskStore.flush(DiskStore.java:249) ... at com.atlassian.user.impl.cache.properties.CachingPropertySetFactory$RecacheOnWritePropertySet.getString(CachingPropertySetFactory.java:263) at com.atlassian.bamboo.user.DefaultBambooUser.getUserProperty(DefaultBambooUser.java:59) at com.atlassian.bamboo.user.DefaultBambooUser.getJabberAddress(DefaultBambooUser.java:52) at com.atlassian.bamboo.ww2.actions.admin.user.ConfigureUser.edit(ConfigureUser.java:145)
1 2 3 4 5 6 7 8 9 10 2017-06-12 06:46:02,313 ERROR [http-nio-8085-exec-20] [runtime] Error executing FreeMarker template FreeMarker template error: Java method "com.atlassian.plugin.webresource.WebResourceManagerImpl.getRequiredResources(com.atlassian.plugin.webresource.UrlMode)" threw an exception when invoked on com.atlassian.plugin.webresource.WebResourceManagerImpl object "com.atlassian.plugin.webresource.WebResourceManagerImpl@4d93d3ce"; see cause exception in the Java stack trace. .. Caused by: java.lang.ArrayStoreException: org.hibernate.property.access.spi.SetterMethodImpl$SerialForm at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1919) .. at com.atlassian.user.impl.cache.properties.CachingPropertySetFactory$RecacheOnWritePropertySet.exists(CachingPropertySetFactory.java:301) at com.atlassian.bamboo.plugins.branchinator.service.UserPropertiesServiceImpl.getUserProperties(UserPropertiesServiceImpl.java:70) at com.atlassian.bamboo.plugins.branchinator.service.UserPropertiesServiceImpl.getUserProperty(UserPropertiesServiceImpl.java:42)

Cause

Ehcache has failed to load its configuration from the Bamboo default (may include additional user customizations especially for LDAP) bundled at <bamboo-install>/atlassian-bamboo/WEB-INF/classes/ehcache.xml and has reverted to a failsafe configuration. This failsafe configuration allows cached entities or queries to be written to disk if the memory store is full. Some of the entities are not serializable, as the Bamboo default configuration for Ehcache disables disk caching.

The failsafe configuration is loaded under the below circumstances:

  1. ehcache.xml is not present in <bamboo-install>/atlassian-bamboo/WEB-INF/classes

  2. <bamboo-install>/atlassian-bamboo/WEB-INF/classes/ehcache.xml is a symbolic link to another location.

Solution

Resolution

  1. Ensure ehcache.xml is present in <bamboo-install>/atlassian-bamboo/WEB-INF/classes

  2. Replace any symbolic links with an actual copy of ehcache.xml or a hard link

Updated on April 8, 2025

Still need help?

The Atlassian Community is here for you.