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
Reply to author
Sign in to reply to author
Forward
Sign in to forward
Delete
You do not have permission to delete messages in this group
Copy link
Report message
Sign in to report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to ehcach...@googlegroups.com
What version of Ehcache you are currently using; 2.6.5
Paste the configuration for the Cache/CacheManager you have an issue with; attached
Add any name and version of other library or framework you use Ehcache with (e.g. Hibernate); Grails 2.2.3
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-2407:33:45,969[catalina-exec-8]ERRORservlet.GrailsDispatcherServlet-HandlerInterceptor.afterCompletionthrewexception net.sf.ehcache.CacheException: Uncaught exception in get() - java.io.OptionalDataException atorg.terracotta.modules.ehcache.store.ClusteredSafeStore.get(ClusteredSafeStore.java:685) atnet.sf.ehcache.Cache.searchInStoreWithoutStats(Cache.java:2072) atnet.sf.ehcache.Cache.get(Cache.java:1590) atnet.sf.ehcache.Cache.get(Cache.java:1557) atgrails.plugin.ehcachesession.EhCachePersisterManager.getSession(EhCachePersisterManager.groovy:88) atgrails.plugin.ehcachesession.EhCachePersisterService.isValid(EhCachePersisterService.groovy:156) atgrails.plugin.ehcachesession.SessionProxyFilter.proxySession(SessionProxyFilter.java:90) atgrails.plugin.ehcachesession.SessionProxyFilter$1.getSession(SessionProxyFilter.java:47) atorg.apache.shiro.web.servlet.ShiroHttpServletRequest.getSession(ShiroHttpServletRequest.java:141) atorg.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
You do not have permission to delete messages in this group
Copy link
Report message
Sign in to report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
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.
You do not have permission to delete messages in this group
Copy link
Report message
Sign in to report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
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.