Crowd fails with net.sf.ehcache.CacheException: java.io.StreamCorruptedException: invalid stream header: 3FA4BE5A
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
Problem
The following appears in atlassian-crowd.log
.
1
2
3
4
5
6
7
8
9
10
11
2017-12-26 04:07:47,585 ajp-bio-8008-exec-8 ERROR [[Catalina].[localhost].[/crowd].[default]] Servlet.service() for servlet [default] in context with path [/crowd] threw exception
net.sf.ehcache.CacheException: java.io.StreamCorruptedException: invalid stream header: 3FA4BE5A
at net.sf.ehcache.store.disk.DiskStorageFactory.retrieve(DiskStorageFactory.java:891)
at net.sf.ehcache.store.disk.Segment.decodeHit(Segment.java:182)
at net.sf.ehcache.store.disk.Segment.get(Segment.java:225)
at net.sf.ehcache.store.disk.DiskStore.fault(DiskStore.java:210)
at net.sf.ehcache.store.CacheStore$4.call(CacheStore.java:198)
at net.sf.ehcache.store.CacheStore$4.call(CacheStore.java:192)
...
Caused by: java.io.StreamCorruptedException: invalid stream header: 3FA4BE5A
...
Cause
The files used by ehcache become corrupted on disk and cannot be used by the Crowd. This is not the session variable cache, but a database cache used to optimise the requests to the database.
Resolution
The files in the cache need to be deleted form the temporary directory. First check where the temp files are located, this is identified by the Java system parameter java.io.tmpdir
. To find this in Linux run this command from the installation directory
Crowd ...
1
sudo jinfo `cat apache-tomcat/work/catalina.pid` | fgrep "java.io.tmpdir ="
In general the location will usually be one of
/tmp
<crowd-install>/apache-tomcat/temp/
Then
Shutdown Crowd
Delete the files in the directory identified by the
jinfo
command forjava.io.tmpdir
Restart Crowd
Was this helpful?