net.sf.ehcache.CacheException: Uncaught exception in get() - java.io.OptionalDataException

1,341 views
Skip to first unread message

Jeff Palmer

unread,
Mar 24, 2015, 1:01:17 PM3/24/15
to ehcach...@googlegroups.com
  1. What version of Ehcache you are currently using; 2.6.5
  2. Paste the configuration for the Cache/CacheManager you have an issue with; attached
  3. Add any name and version of other library or framework you use Ehcache with (e.g. Hibernate); Grails 2.2.3
  4. Providing JDK and OS versions maybe useful as well. JDK 1.6
Lots of exceptions are appearing in the logs. The body of the exception is as follows:

2015-03-24 07:33:45,969 [catalina-exec-8] ERROR servlet.GrailsDispatcherServlet  - HandlerInterceptor.afterCompletion threw exception
net.sf.ehcache.CacheException: Uncaught exception in get() - java.io.OptionalDataException
at org.terracotta.modules.ehcache.store.ClusteredSafeStore.get(ClusteredSafeStore.java:685)
at net.sf.ehcache.Cache.searchInStoreWithoutStats(Cache.java:2072)
at net.sf.ehcache.Cache.get(Cache.java:1590)
at net.sf.ehcache.Cache.get(Cache.java:1557)
at grails.plugin.ehcachesession.EhCachePersisterManager.getSession(EhCachePersisterManager.groovy:88)
at grails.plugin.ehcachesession.EhCachePersisterService.isValid(EhCachePersisterService.groovy:156)
at grails.plugin.ehcachesession.SessionProxyFilter.proxySession(SessionProxyFilter.java:90)
at grails.plugin.ehcachesession.SessionProxyFilter$1.getSession(SessionProxyFilter.java:47)
at org.apache.shiro.web.servlet.ShiroHttpServletRequest.getSession(ShiroHttpServletRequest.java:141)
at org.apache.shiro.web.servlet.ShiroHttpServletRequest.getSession(ShiroHttpServletRequest.java:163)
at grails.plugin.ehcachesession.SessionFilters$_closure1_closure2_closure3.doCall(SessionFilters.groovy:25)
at org.apache.shiro.grails.SavedRequestFilter.doFilter(SavedRequestFilter.java:55)
at com.planetj.servlet.filter.compression.CompressingFilter.doFilter(CompressingFilter.java:270)
at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:359)
at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:275)
at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:344)
at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:272)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:81)
at com.studentsonly.grails.plugins.uiperformance.CacheFilter.doFilter(CacheFilter.java:67)
at grails.plugin.ehcachesession.SessionProxyFilter.doFilterInternal(SessionProxyFilter.java:60)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662)
Caused by: net.sf.ehcache.CacheException: java.io.OptionalDataException
at org.terracotta.modules.ehcache.store.ValueModeHandlerSerialization.createElement(ValueModeHandlerSerialization.java:123)
at org.terracotta.modules.ehcache.store.ValueModeHandlerHibernate.createElement(ValueModeHandlerHibernate.java:8)
at org.terracotta.modules.ehcache.store.ValueModeHandlerSerialization.createElement(ValueModeHandlerSerialization.java:95)
at org.terracotta.modules.ehcache.store.ValueModeHandlerHibernate.createElement(ValueModeHandlerHibernate.java:8)
at org.terracotta.modules.ehcache.store.backend.NonStrictBackend.get(NonStrictBackend.java:184)
at org.terracotta.modules.ehcache.store.ClusteredStore.doGet(ClusteredStore.java:421)
at org.terracotta.modules.ehcache.store.ClusteredStore.get(ClusteredStore.java:407)
at org.terracotta.modules.ehcache.store.ClusteredSafeStore.get(ClusteredSafeStore.java:682)
... 24 more
Caused by: java.io.OptionalDataException
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:349)
at java.util.HashMap.readObject(HashMap.java:1029)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:969)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1775)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1327)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:349)
at net.sf.ehcache.SerializationModeElementData.create(SerializationModeElementData.java:28)
at org.terracotta.modules.ehcache.store.ElementSerializationStrategy.deserialize(ElementSerializationStrategy.java:68)
at org.terracotta.modules.ehcache.store.ElementSerializationStrategy.deserialize(ElementSerializationStrategy.java:29)
at org.terracotta.modules.ehcache.store.ElementSerializationStrategy.deserialize(ElementSerializationStrategy.java:19)
at org.terracotta.cache.serialization.SerializedEntry.getDeserializedValue(SerializedEntry.java:176)
at org.terracotta.cache.serialization.SerializedEntry.getDeserializedValue(SerializedEntry.java:156)
at org.terracotta.modules.ehcache.store.ValueModeHandlerSerialization.createElement(ValueModeHandlerSerialization.java:119)
... 31 more
sessionCache.xml

Chris Dennis

unread,
Mar 24, 2015, 1:09:37 PM3/24/15
to ehcach...@googlegroups.com
Every other time this problem has presented it’s been a symptom of the cache value being concurrently mutated while the initial serialization was happening (I.e. while the value was being put).  In this case I suspect that the HashMap that is being deserialized was being concurrently mutated while it was being serialized (which is scary for other reasons too!).  If I were you I’d look at that possibility first.

Chris

--
You received this message because you are subscribed to the Google Groups "ehcache-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ehcache-user...@googlegroups.com.
To post to this group, send email to ehcach...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ehcache-users/68b818cb-e121-48d9-9fd5-aa0ad1a165d1%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Message has been deleted

Sepideh AbbasiTehrani

unread,
Jun 22, 2016, 1:57:48 AM6/22/16
to ehcache-users
Thanks Chris,
I also had this issue randomly. I could simulate it by a loop on put and get from cache serially. I solved it, by clearing cache, when we faced to  java.io.OptionalDataException while trying to get from cache.

Sepideh
Reply all
Reply to author
Forward
0 new messages