On Oct 22, 2008, at 12:06 PM, Mattias Jiderhamn wrote:

> We have a strange problem with Resin that looks like a bug but might  
> be
> some configuration issue.
>
> We hit the bug while storing more than the usual amount of data in a
> session (during a process that takes quite a lot of time).
> If we narrow things down so we store the same kind of data, although  
> not
> as much (and not using so much time), the error does not come about.
> The symptoms are that the slow request seems to finish correcly and  
> the
> data is returned to the browser, however on the next request the  
> session
> does no longer exist. Other sessions does not seem to be affected.  
> There
> are errors in the log file which makes me believe the session is lost
> during serializing/deserializing.
>
> With the same input data, the error is always reproducible.

Do you know how large the session is?  Also, does "finer" show  
anything interesting?

There may be a limit at 64M of session data, but I doubt you're  
hitting that.  It's possible there's an off-by-one issue at one of the  
boundaries (since the data is split into fragments).  Does adding 1 to  
the session length still produce the same error?

-- Scott

>
>
> Further below is some detailed information.
>
> My questions are:
> - Is there a limit to the amount of data Resin can keep in a  
> session? Is
> there a setting we should just increase?
> - Or is this a bug? Is there any workaround for now?
>
> Resin version: 3.1.6 Pro
>
> Session config:
>        <session-config>
>          <use-persistent-store />
>          <session-max>4096</session-max>
>          <session-timeout>30</session-timeout>
>        </session-config>
>
>
> Related errors or flavors of the same error:
>
> [18:41:24.000] java.lang.IllegalStateException: block/fragment mixup
> [18:41:24.000]  at  
> com.caucho.db.store.Inode.writeBlockAddr(Inode.java:1078)
> [18:41:24.000]  at com.caucho.db.store.Inode.appendBlock(Inode.java: 
> 492)
> [18:41:24.000]  at com.caucho.db.store.Inode.append(Inode.java:388)
> [18:41:24.000]  at
> com 
> .caucho.db.store.BlobOutputStream.flushBlock(BlobOutputStream.java: 
> 188)
> [18:41:24.000]  at
> com.caucho.db.store.BlobOutputStream.write(BlobOutputStream.java:117)
> [18:41:24.000]  at
> com.caucho.db.table.BlobColumn.setStream(BlobColumn.java:179)
> [18:41:24.000]  at  
> com.caucho.db.table.BlobColumn.set(BlobColumn.java:267)
> [18:41:24.000]  at
> com.caucho.db.sql.UpdateQuery.execute(UpdateQuery.java:110)
> [18:41:24.000]  at
> com 
> .caucho 
> .db.jdbc.PreparedStatementImpl.execute(PreparedStatementImpl.java:345)
> [18:41:24.000]  at
> com 
> .caucho 
> .db 
> .jdbc.PreparedStatementImpl.executeUpdate(PreparedStatementImpl.java: 
> 313)
> [18:41:24.000]  at
> com 
> .caucho.server.cluster.FileBacking.storeSelfUpdate(FileBacking.java: 
> 524)
> [18:41:24.000]  at
> com.caucho.server.cluster.FileBacking.storeSelf(FileBacking.java:474)
> [18:41:24.000]  at
> com.caucho.server.cluster.FileStore.store(FileStore.java:169)
> [18:41:24.000]  at
> com.caucho.server.cluster.ClusterObject.store(ClusterObject.java:414)
> [18:41:24.000]  at
> com.caucho.server.session.SessionImpl.save(SessionImpl.java:960)
> [18:41:24.000]  at
> com 
> .caucho.server.session.SessionImpl.saveAfterRequest(SessionImpl.java: 
> 946)
> [18:41:24.000]  at
> com.caucho.server.session.SessionImpl.finish(SessionImpl.java:908)
> [18:41:24.000]  at
> com 
> .caucho 
> .server 
> .connection.AbstractHttpRequest.finish(AbstractHttpRequest.java:2506)
> [18:41:24.000]  at
> com.caucho.server.http.HttpRequest.finish(HttpRequest.java:1466)
> [18:41:24.000]  at
> com 
> .caucho 
> .server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:212)
> [18:41:24.000]  at
> com 
> .caucho 
> .server.dispatch.ServletInvocation.service(ServletInvocation.java:266)
> [18:41:24.000]  at
> com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:269)
> [18:41:24.000]  at
> com.caucho.server.port.TcpConnection.run(TcpConnection.java:603)
> [18:41:24.000]  at
> com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:721)
> [18:41:24.000]  at com.caucho.util.ThreadPool 
> $Item.run(ThreadPool.java:643)
> [18:41:24.000]  at java.lang.Thread.run(Thread.java:595)
>
> [18:47:31.281] java.lang.IllegalStateException: Table[srun_:2]: inode
> block 420000 has 0 fragment
> [18:47:31.281]  at com.caucho.db.store.Inode.stateError(Inode.java: 
> 1164)
> [18:47:31.281]  at com.caucho.db.store.Inode.remove(Inode.java:836)
> [18:47:31.281]  at
> com.caucho.db.store.Transaction.writeData(Transaction.java:568)
> [18:47:31.281]  at
> com.caucho.db.sql.QueryContext.unlock(QueryContext.java:537)
> [18:47:31.281]  at
> com.caucho.db.sql.RowIterateExpr.nextBlock(RowIterateExpr.java:86)
> [18:47:31.281]  at com.caucho.db.sql.Query.nextBlock(Query.java:721)
> [18:47:31.281]  at com.caucho.db.sql.Query.nextTuple(Query.java:698)
> [18:47:31.281]  at
> com.caucho.db.sql.DeleteQuery.execute(DeleteQuery.java:81)
> [18:47:31.281]  at
> com 
> .caucho 
> .db.jdbc.PreparedStatementImpl.execute(PreparedStatementImpl.java:345)
> [18:47:31.281]  at
> com 
> .caucho 
> .db 
> .jdbc.PreparedStatementImpl.executeUpdate(PreparedStatementImpl.java: 
> 313)
> [18:47:31.281]  at
> com 
> .caucho.server.cluster.FileBacking.clearOldObjects(FileBacking.java: 
> 270)
> [18:47:31.281]  at
> com.caucho.server.cluster.FileStore.clearOldObjects(FileStore.java: 
> 115)
> [18:47:31.281]  at
> com.caucho.server.cluster.StoreManager.handleAlarm(StoreManager.java: 
> 636)
> [18:47:31.281]  at com.caucho.util.Alarm.handleAlarm(Alarm.java:375)
> [18:47:31.281]  at com.caucho.util.Alarm.run(Alarm.java:345)
> [18:47:31.281]  at
> com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:721)
> [18:47:31.281]  at com.caucho.util.ThreadPool 
> $Item.run(ThreadPool.java:643)
> [18:47:31.281]  at java.lang.Thread.run(Thread.java:595)
>
>
> [17:24:07.351] java.lang.IllegalStateException: block/fragment mixup
> [17:24:07.351]     at
> com.caucho.db.store.Inode.readBlockAddr(Inode.java:1047)
> [17:24:07.351]     at com.caucho.db.store.Inode.read(Inode.java:319)
> [17:24:07.351]     at
> com.caucho.db.store.BlobInputStream.read(BlobInputStream.java:114)
> [17:24:07.351]     at com.caucho.vfs.VfsStream.read(VfsStream.java: 
> 140)
> [17:24:07.351]     at  
> com.caucho.vfs.Crc64Stream.read(Crc64Stream.java:84)
> [17:24:07.351]     at
> com.caucho.vfs.ReadStream.readBuffer(ReadStream.java:1015)
> [17:24:07.351]     at com.caucho.vfs.ReadStream.read(ReadStream.java: 
> 425)
> [17:24:07.351]     at
> java.io.ObjectInputStream 
> $PeekInputStream.read(ObjectInputStream.java:2266)
> [17:24:07.351]     at
> java.io.ObjectInputStream 
> $PeekInputStream.readFully(ObjectInputStream.java:2279)
> [17:24:07.351]     at
> java.io.ObjectInputStream 
> $BlockDataInputStream.readShort(ObjectInputStream.java:2750)
> [17:24:07.351]     at
> java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:780)
> [17:24:07.351]     at
> java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
> [17:24:07.351]     at
> com.caucho.server.session.SessionManager 
> $DistributedObjectInputStream.<init>(SessionManager.java:1749)
> [17:24:07.351]     at
> com.caucho.server.session.SessionManager.load(SessionManager.java: 
> 1552)
> [17:24:07.351]     at
> com.caucho.server.cluster.ClusterObject.load(ClusterObject.java:299)
> [17:24:07.351]     at
> com.caucho.server.cluster.FileBacking.loadSelf(FileBacking.java:314)
> [17:24:07.351]     at
> com.caucho.server.cluster.FileStore.load(FileStore.java:147)
> [17:24:07.351]     at
> com.caucho.server.cluster.ClusterObject.load(ClusterObject.java:268)
> [17:24:07.351]     at
> com.caucho.server.session.SessionImpl.load(SessionImpl.java:774)
> [17:24:07.351]     at
> com 
> .caucho.server.session.SessionManager.getSession(SessionManager.java: 
> 1363)
> [17:24:07.351]     at
> com 
> .caucho 
> .server 
> .connection 
> .AbstractHttpRequest.createSession(AbstractHttpRequest.java:1517)
> [17:24:07.351]     at
> com 
> .caucho 
> .server 
> .connection.AbstractHttpRequest.getSession(AbstractHttpRequest.java: 
> 1326)
> [17:24:07.351]     at
> se.exder.servlet.SessionCacheFilter.doFilter(SessionCacheFilter.java: 
> 34)
> [17:24:07.351]     at
> com 
> .caucho 
> .server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
> [17:24:07.351]     at
> com 
> .caucho.server.cache.CacheFilterChain.doFilter(CacheFilterChain.java: 
> 194)
> [17:24:07.351]     at
> com 
> .caucho 
> .server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
> [17:24:07.351]     at
> com 
> .caucho 
> .server.dispatch.ServletInvocation.service(ServletInvocation.java:266)
> [17:24:07.351]     at
> com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:270)
> [17:24:07.351]     at
> com.caucho.server.port.TcpConnection.run(TcpConnection.java:678)
> [17:24:07.351]     at
> com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:721)
> [17:24:07.351]     at
> com.caucho.util.ThreadPool$Item.run(ThreadPool.java:643)
> [17:24:07.351]     at java.lang.Thread.run(Thread.java:619)
> [17:24:07.355] java.lang.ArrayIndexOutOfBoundsException: 16515117
> [17:24:07.355]     at
> com.caucho.db.store.Store.deleteFragment(Store.java:1041)
> [17:24:07.355]     at com.caucho.db.store.Inode.remove(Inode.java:844)
> [17:24:07.355]     at
> com.caucho.db.store.Transaction.writeData(Transaction.java:568)
> [17:24:07.355]     at
> com.caucho.db.sql.QueryContext.unlock(QueryContext.java:537)
> [17:24:07.355]     at
> com.caucho.db.sql.UpdateQuery.execute(UpdateQuery.java:118)
> [17:24:07.355]     at
> com 
> .caucho 
> .db.jdbc.PreparedStatementImpl.execute(PreparedStatementImpl.java:345)
> [17:24:07.355]     at
> com 
> .caucho 
> .db 
> .jdbc.PreparedStatementImpl.executeUpdate(PreparedStatementImpl.java: 
> 313)
> [17:24:07.355]     at
> com 
> .caucho.server.cluster.FileBacking.storeSelfUpdate(FileBacking.java: 
> 524)
> [17:24:07.355]     at
> com.caucho.server.cluster.FileBacking.storeSelf(FileBacking.java:474)
> [17:24:07.355]     at
> com.caucho.server.cluster.FileStore.store(FileStore.java:169)
> [17:24:07.355]     at
> com.caucho.server.cluster.ClusterObject.store(ClusterObject.java:414)
> [17:24:07.355]     at
> com.caucho.server.session.SessionImpl.save(SessionImpl.java:952)
> [17:24:07.355]     at
> com 
> .caucho 
> .server 
> .connection.AbstractHttpRequest.saveSession(AbstractHttpRequest.java: 
> 2488)
> [17:24:07.355]     at
> com 
> .caucho 
> .server 
> .connection 
> .AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:655)
>
> [13:31:29.115] java.lang.IllegalStateException: Table[srun_:2]: inode
> block 420000 has invalid fragment ee800036ee807871
> [13:31:29.115]     at  
> com.caucho.db.store.Inode.stateError(Inode.java:1164)
> [13:31:29.115]     at com.caucho.db.store.Inode.remove(Inode.java:841)
> [13:31:29.115]     at
> com.caucho.db.store.Transaction.writeData(Transaction.java:568)
> [13:31:29.115]     at
> com.caucho.db.sql.QueryContext.unlock(QueryContext.java:537)
> [13:31:29.115]     at
> com.caucho.db.sql.UpdateQuery.execute(UpdateQuery.java:118)
> [13:31:29.115]     at
> com 
> .caucho 
> .db.jdbc.PreparedStatementImpl.execute(PreparedStatementImpl.java:345)
> [13:31:29.115]     at
> com 
> .caucho 
> .db 
> .jdbc.PreparedStatementImpl.executeUpdate(PreparedStatementImpl.java: 
> 313)
> [13:31:29.115]     at
> com 
> .caucho.server.cluster.FileBacking.storeSelfUpdate(FileBacking.java: 
> 524)
> [13:31:29.115]     at
> com.caucho.server.cluster.FileBacking.storeSelf(FileBacking.java:474)
> [13:31:29.115]     at
> com.caucho.server.cluster.FileStore.store(FileStore.java:169)
> [13:31:29.115]     at
> com.caucho.server.cluster.ClusterObject.store(ClusterObject.java:414)
> [13:31:29.115]     at
> com.caucho.server.session.SessionImpl.save(SessionImpl.java:952)
> [13:31:29.115]     at
> com 
> .caucho.server.session.SessionImpl.saveAfterRequest(SessionImpl.java: 
> 938)
> [13:31:29.115]     at
> com.caucho.server.session.SessionImpl.finish(SessionImpl.java:900)
> [13:31:29.115]     at
> com 
> .caucho 
> .server 
> .connection.AbstractHttpRequest.finish(AbstractHttpRequest.java:2509)
> [13:31:29.115]     at
> com.caucho.server.http.HttpRequest.finish(HttpRequest.java:1467)
> [13:31:29.115]     at
> com 
> .caucho 
> .server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:219)
> [13:31:29.115]     at
> com 
> .caucho 
> .server.dispatch.ServletInvocation.service(ServletInvocation.java:266)
> [13:31:29.115]     at
> com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:270)
> [13:31:29.115]     at
> com.caucho.server.port.TcpConnection.run(TcpConnection.java:678)
> [13:31:29.115]     at
> com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:721)
> [13:31:29.115]     at
> com.caucho.util.ThreadPool$Item.run(ThreadPool.java:643)
> [13:31:29.115]     at java.lang.Thread.run(Thread.java:619)
>
> Thanks in advance,
>  Mattias
>
>
> _______________________________________________
> resin-interest mailing list
> resin-interest@caucho.com
> http://maillist.caucho.com/mailman/listinfo/resin-interest



_______________________________________________
resin-interest mailing list
resin-interest@caucho.com
http://maillist.caucho.com/mailman/listinfo/resin-interest

Reply via email to