Mantis - Resin
Viewing Issue Advanced Details
1764 minor always 05-29-07 09:22 09-06-07 10:06
ferg  
ferg  
normal  
closed 3.1.1  
fixed  
none    
none 3.1.3  
0001764: jdbc store corruption
(rep by Jan Kriesten)


i'm getting the following exception using resin pro 3.1.1 / jdk 1.6 / mysql /
mysql-connector 5.0.6:

---8<---
[21:01:53.998] java.io.StreamCorruptedException: invalid type code: 00
[21:01:53.998] at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1356)
[21:01:53.998] at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
[21:01:53.998] at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
[21:01:53.998] at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
[21:01:53.998] at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
[21:01:53.998] at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
[21:01:53.998] at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
[21:01:53.998] at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
[21:01:53.998] at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
[21:01:53.998] at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
[21:01:53.998] at com.caucho.server.session.SessionImpl.load(SessionImpl.java:962)
[21:01:53.998] at
com.caucho.server.session.SessionManager.load(SessionManager.java:1507)
[21:01:53.998] at
com.caucho.server.cluster.ClusterObject.load(ClusterObject.java:301)
[21:01:53.998] at com.caucho.server.cluster.JdbcStore.load(JdbcStore.java:221)
[21:01:53.998] at
com.caucho.server.cluster.ClusterObject.load(ClusterObject.java:268)
[21:01:53.998] at com.caucho.server.session.SessionImpl.load(SessionImpl.java:741)
[21:01:53.998] at
com.caucho.server.session.SessionManager.load(SessionManager.java:1444)
[21:01:53.998] at
com.caucho.server.session.SessionManager.getSession(SessionManager.java:1303)
[21:01:53.998] at
com.caucho.server.connection.AbstractHttpRequest.createSession(AbstractHttpRequest.java:1455)
[21:01:53.998] at
com.caucho.server.connection.AbstractHttpRequest.getSession(AbstractHttpRequest.java:1270)
[21:01:53.998] at
org.apache.wicket.protocol.http.AbstractHttpSessionStore.getSessionId(AbstractHttpSessionStore.java:179)
[21:01:53.998] at org.apache.wicket.Session.bind(Session.java:420)
---8<---

can anyone enlighten me, why this occurs?

Notes
(0001964)
scruz   
05-29-07 14:41   
We get a similar exception every once in a while even when using cluster store:

com.caucho.server.cluster.ClusterObject.load java.io.StreamCorruptedException: invalid type code: AC
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1356)
 at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
 at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
 at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
 at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
 at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
 at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
 at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
 at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
 at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
 at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
 at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
 at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
 at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
 at java.util.HashMap.readObject(HashMap.java:1028)
 at sun.reflect.GeneratedMethodAccessor63.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
 at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1846)
 at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
 at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
 at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
 at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
 at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
 at com.caucho.server.session.SessionImpl.load(SessionImpl.java:853)
 at com.caucho.server.session.SessionManager.load(SessionManager.java:1329)
 at com.caucho.server.cluster.ClusterObject.load(ClusterObject.java:282)
 at com.caucho.server.cluster.FileBacking.loadSelf(FileBacking.java:322)
 at com.caucho.server.cluster.ClusterStore.load(ClusterStore.java:408)
 at com.caucho.server.cluster.ClusterObject.load(ClusterObject.java:253)
 at com.caucho.server.session.SessionImpl.load(SessionImpl.java:692)
 at com.caucho.server.session.SessionManager.load(SessionManager.java:1260)
 at com.caucho.server.session.SessionManager.getSession(SessionManager.java:1121)
 at com.caucho.server.connection.AbstractHttpRequest.createSession(AbstractHttpRequest.java:1367)
 at com.caucho.server.connection.AbstractHttpRequest.getSession(AbstractHttpRequest.java:1179)
 at _jsp._myJsp__jsp._jspService(_myJsp__jsp.java:25)
 at com.caucho.jsp.JavaPage.service(JavaPage.java:60)
 at com.caucho.jsp.Page.pageservice(Page.java:570)
 at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:175)
 at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:299)
 at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
 at com.caucho.server.cache.CacheFilterChain.doFilter(CacheFilterChain.java:188)
 at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:178)
 at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)
 at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:268)
 at com.caucho.server.port.TcpConnection.run(TcpConnection.java:389)
 at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:507)
 at com.caucho.util.ThreadPool.run(ThreadPool.java:433)
 at java.lang.Thread.run(Thread.java:619)

Other similar examples:

com.caucho.server.cluster.ClusterObject.load java.io.StreamCorruptedException: invalid stream header: 05706172
 at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783)
 at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
 at com.caucho.server.cluster.ClusterObject$DistributedObjectInputStream.<init>(ClusterObject.java:468)
 at com.caucho.server.cluster.ClusterObject.load(ClusterObject.java:280)
 at com.caucho.server.cluster.FileBacking.loadSelf(FileBacking.java:322)
 at com.caucho.server.cluster.ClusterStore.load(ClusterStore.java:408)
 at com.caucho.server.cluster.ClusterObject.load(ClusterObject.java:253)
 at com.caucho.server.session.SessionImpl.load(SessionImpl.java:692)
 at com.caucho.server.session.SessionManager.getSession(SessionManager.java:1124)
 at com.caucho.server.connection.AbstractHttpRequest.createSession(AbstractHttpRequest.java:1367)
 at com.caucho.server.connection.AbstractHttpRequest.getSession(AbstractHttpRequest.java:1179)

com.caucho.server.cluster.ClusterObject.load java.io.StreamCorruptedException: invalid type code: 6F
 at java.io.ObjectInputStream.readTypeString(ObjectInputStream.java:1404)
 at java.io.ObjectStreamClass.readNonProxy(ObjectStreamClass.java:650)
 at java.io.ObjectInputStream.readClassDescriptor(ObjectInputStream.java:809)
 at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1565)
 at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
 at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1583)
 at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
 at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
 at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
 at com.caucho.server.session.SessionImpl.load(SessionImpl.java:853)
 at com.caucho.server.session.SessionManager.load(SessionManager.java:1329)
 at com.caucho.server.cluster.ClusterObject.load(ClusterObject.java:282)
 at com.caucho.server.cluster.FileBacking.loadSelf(FileBacking.java:322)
 at com.caucho.server.cluster.ClusterStore.load(ClusterStore.java:408)
 at com.caucho.server.cluster.ClusterObject.load(ClusterObject.java:253)
 at com.caucho.server.session.SessionImpl.load(SessionImpl.java:692)
 at com.caucho.server.session.SessionManager.getSession(SessionManager.java:1124)
 at com.caucho.server.connection.AbstractHttpRequest.createSession(AbstractHttpRequest.java:1367)
 at com.caucho.server.connection.AbstractHttpRequest.getSession(AbstractHttpRequest.java:1179)

com.caucho.server.cluster.ClusterObject.load java.io.StreamCorruptedException: invalid stream header: 00000000
 at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783)
 at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
 at com.caucho.server.cluster.ClusterObject$DistributedObjectInputStream.<init>(ClusterObject.java:468)
 at com.caucho.server.cluster.ClusterObject.load(ClusterObject.java:280)
 at com.caucho.server.cluster.FileBacking.loadSelf(FileBacking.java:322)
 at com.caucho.server.cluster.ClusterStore.load(ClusterStore.java:408)
 at com.caucho.server.cluster.ClusterObject.load(ClusterObject.java:253)
 at com.caucho.server.session.SessionImpl.load(SessionImpl.java:692)
 at com.caucho.server.session.SessionManager.getSession(SessionManager.java:1124)
 at com.caucho.server.connection.AbstractHttpRequest.createSession(AbstractHttpRequest.java:1367)
 at com.caucho.server.connection.AbstractHttpRequest.getSession(AbstractHttpRequest.java:1179)

com.caucho.server.cluster.ClusterObject.load java.io.StreamCorruptedException: invalid stream header: 00062433
 at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783)
 at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
 at com.caucho.server.cluster.ClusterObject$DistributedObjectInputStream.<init>(ClusterObject.java:468)
 at com.caucho.server.cluster.ClusterObject.load(ClusterObject.java:280)
 at com.caucho.server.cluster.FileBacking.loadSelf(FileBacking.java:322)
 at com.caucho.server.cluster.ClusterStore.load(ClusterStore.java:408)
 at com.caucho.server.cluster.ClusterObject.load(ClusterObject.java:253)
 at com.caucho.server.session.SessionImpl.load(SessionImpl.java:692)
 at com.caucho.server.session.SessionManager.getSession(SessionManager.java:1124)
 at com.caucho.server.connection.AbstractHttpRequest.createSession(AbstractHttpRequest.java:1367)
 at com.caucho.server.connection.AbstractHttpRequest.getSession(AbstractHttpRequest.java:1179)

com.caucho.server.cluster.ClusterObject.load java.io.StreamCorruptedException: invalid type code: 00
 at java.io.ObjectInputStream$BlockDataInputStream.readBlockHeader(ObjectInputStream.java:2462)
 at java.io.ObjectInputStream$BlockDataInputStream.refill(ObjectInputStream.java:2497)
 at java.io.ObjectInputStream$BlockDataInputStream.skipBlockData(ObjectInputStream.java:2399)
 at java.io.ObjectInputStream.skipCustomData(ObjectInputStream.java:1895)
 at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1872)
 at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
 at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
 at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
 at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
 at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
 at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
 at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
 at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
 at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
 at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
 at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
 at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
 at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
 at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
 at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
 at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
 at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
 at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
 at com.caucho.server.session.SessionImpl.load(SessionImpl.java:853)
 at com.caucho.server.session.SessionManager.load(SessionManager.java:1329)
 at com.caucho.server.cluster.ClusterObject.load(ClusterObject.java:282)
 at com.caucho.server.cluster.FileBacking.loadSelf(FileBacking.java:322)
 at com.caucho.server.cluster.ClusterStore.load(ClusterStore.java:408)
 at com.caucho.server.cluster.ClusterObject.load(ClusterObject.java:253)
 at com.caucho.server.session.SessionImpl.load(SessionImpl.java:692)
 at com.caucho.server.session.SessionManager.getSession(SessionManager.java:1124)
 at com.caucho.server.connection.AbstractHttpRequest.createSession(AbstractHttpRequest.java:1367)
 at com.caucho.server.connection.AbstractHttpRequest.getSession(AbstractHttpRequest.java:1179)

Some days are worse than others, but on average it happens about once or twice per day.
(0001965)
scruz   
05-29-07 14:46   
Sorry, I forgot some information. We have seen this on Resin Pro 3.0.19 and 3.0.23. We are using Sun JDK 1.6.0 Update 1 on RHEL4. The logs are writing to a local filesystem (not over NFS).
(0002118)
ferg   
07-19-07 09:17   
Proposed fix partially backed out.
(0002274)
ferg   
09-06-07 10:06   
I haven't been able to duplicate this exact situation, but have cleaned up the persistence code though code review.

If this problem exists, please switch to hessian serialization and report that stack trace (it may give better information than the java.io serialization gives):

<session-config serialization-type="hessian"/>