Hi David

Thanks very much for your insights.

After poking around a lot I seem to have tracked down the issue that is giving the headaches:

Whenever a client is stopping the initial download of a file, the created cache results in a corrupt file. ie: if I download a (so far uncached) large pdf of 4mb and click on cancel in the download manager at 2mb the cached file has only a size of 2mb and naturally all subsequential downloads will receive a incomplete/corrupted file.

this on its own is already annoying - now toss in IE7 and downloads with a meta refresh to make 90% of your downloads corrupt. tasty!

So the only way to guarantee that this won't happen anymore is to totally disable cache on the dms (or wherever your downloads are stored) - which also rather s*cks.


Has someone an idea how to avoid this issue and still be able to work with caching?

Does this qualify as a bug and should I file a jira-entry?


brgds, Thomas




On 06.02.2008, at 13:40, David Smith wrote:

Thanks for the stack trace. The error occurs on the connection between tomcat and the client. Neither Jackrabbit or the BDB are at fault here. Something between your tomcat server and your client browser is disrupting the connection. I would investigate firewalls, network switches, and ethernet cables as possible culprits. Does this happen with one particular client machine or does everyone get this problem? That'll tell you which end to look at.

--David

Thomas Martin wrote:

Hey David

Thanks for your reply - I pasted some more details of the exception below.

If you can make anything of it I am more than happy to hear about it.

Cheers, Thomas

ERROR info.magnolia.cms.cache.simple.CacheImpl CacheImpl.java (streamFromCache:238) 05.02.2008 06:18:18 Error while reading cache for: '/dms/geschaeftsberichte/gb_04/gb_04.pdf'.
ClientAbortException:  java.net.SocketException: Broken pipe
at org.apache.coyote.tomcat5.OutputBuffer.realWriteBytes (OutputBuffer.java:373) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer (ByteChunk.java:398) at org.apache.tomcat.util.buf.ByteChunk.append (ByteChunk.java:318) at org.apache.coyote.tomcat5.OutputBuffer.writeBytes (OutputBuffer.java:401) at org.apache.coyote.tomcat5.OutputBuffer.write (OutputBuffer.java:388) at org.apache.coyote.tomcat5.CoyoteOutputStream.write (CoyoteOutputStream.java:76)
        at org.apache.commons.io.IOUtils.copy(IOUtils.java:997)
at info.magnolia.cms.cache.simple.CacheImpl.streamFromCache (CacheImpl.java:233) at info.magnolia.cms.cache.DefaultCacheManager.doStreamFromCache (DefaultCacheManager.java:102) at info.magnolia.cms.cache.BaseCacheManager.streamFromCache (BaseCacheManager.java:248) at info.magnolia.cms.cache.ManageableCacheManager.streamFromCache (ManageableCacheManager.java:143) at info.magnolia.cms.cache.CacheFilter.doFilter (CacheFilter.java:68) at info.magnolia.cms.filters.MagnoliaManagedFilter $CustomFilterChain.doFilter(MagnoliaManagedFilter.java:92) at info.magnolia.cms.filters.MgnlInterceptFilter.doFilter (MgnlInterceptFilter.java:130) at info.magnolia.cms.filters.MagnoliaManagedFilter $CustomFilterChain.doFilter(MagnoliaManagedFilter.java:92) at info.magnolia.cms.filters.MgnlContextFilter.doFilter (MgnlContextFilter.java:45) at info.magnolia.cms.filters.MagnoliaManagedFilter $CustomFilterChain.doFilter(MagnoliaManagedFilter.java:92) at info.magnolia.cms.security.SecurityFilter.doFilter (SecurityFilter.java:101) at info.magnolia.cms.filters.MagnoliaManagedFilter $CustomFilterChain.doFilter(MagnoliaManagedFilter.java:92) at info.magnolia.cms.filters.MultipartRequestFilter.doFilter (MultipartRequestFilter.java:80) at info.magnolia.cms.filters.MagnoliaManagedFilter $CustomFilterChain.doFilter(MagnoliaManagedFilter.java:92) at info.magnolia.cms.filters.MgnlVirtualUriFilter.doFilter (MgnlVirtualUriFilter.java:83) at info.magnolia.cms.filters.MagnoliaManagedFilter $CustomFilterChain.doFilter(MagnoliaManagedFilter.java:92) at info.magnolia.cms.filters.ContentTypeFilter.doFilter (ContentTypeFilter.java:66) at info.magnolia.cms.filters.MagnoliaManagedFilter $CustomFilterChain.doFilter(MagnoliaManagedFilter.java:92) at info.magnolia.cms.filters.MagnoliaManagedFilter.doFilter (MagnoliaManagedFilter.java:65) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:186) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:157) at org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:214) at org.apache.catalina.core.StandardValveContext.invokeNext (StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:520) at org.apache.catalina.core.StandardContextValve.invokeInternal (StandardContextValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:152) at org.apache.catalina.core.StandardValveContext.invokeNext (StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:520) at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:137) at org.apache.catalina.core.StandardValveContext.invokeNext (StandardValveContext.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:118) at org.apache.catalina.core.StandardValveContext.invokeNext (StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:520) at org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:109) at org.apache.catalina.core.StandardValveContext.invokeNext (StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:520) at org.apache.catalina.core.ContainerBase.invoke (ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service (CoyoteAdapter.java:160) at org.apache.jk.server.JkCoyoteHandler.invoke (JkCoyoteHandler.java:300) at org.apache.jk.common.HandlerRequest.invoke (HandlerRequest.java:374) at org.apache.jk.common.ChannelSocket.invoke (ChannelSocket.java:743) at org.apache.jk.common.ChannelSocket.processConnection (ChannelSocket.java:675) at org.apache.jk.common.SocketConnection.runIt (ChannelSocket.java:866) at org.apache.tomcat.util.threads.ThreadPool $ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:613)

ERROR info.magnolia.module.dms.DMSDownloadServlet DMSDownloadServlet.java(doGet:50) 05.02.2008 06:18:18 error during download
ClientAbortException:  java.net.SocketException: Broken pipe
at org.apache.coyote.tomcat5.OutputBuffer.realWriteBytes (OutputBuffer.java:373) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer (ByteChunk.java:398) at org.apache.tomcat.util.buf.ByteChunk.append (ByteChunk.java:318) at org.apache.coyote.tomcat5.OutputBuffer.writeBytes (OutputBuffer.java:401) at org.apache.coyote.tomcat5.OutputBuffer.write (OutputBuffer.java:388) at org.apache.coyote.tomcat5.CoyoteOutputStream.write (CoyoteOutputStream.java:76) at info.magnolia.cms.cache.MultiplexServletOutputStream.write (MultiplexServletOutputStream.java:36) at info.magnolia.module.dms.DMSDownloadServlet.sendUnCompressed (DMSDownloadServlet.java:78) at info.magnolia.module.dms.DMSDownloadServlet.handleResourceRequest (DMSDownloadServlet.java:67) at info.magnolia.module.dms.DMSDownloadServlet.process (DMSDownloadServlet.java:141) at info.magnolia.module.dms.DMSDownloadServlet.doGet (DMSDownloadServlet.java:47) at javax.servlet.http.HttpServlet.service(HttpServlet.java: 689) at javax.servlet.http.HttpServlet.service(HttpServlet.java: 802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:157) at info.magnolia.cms.filters.MagnoliaManagedFilter $CustomFilterChain.doFilter(MagnoliaManagedFilter.java:88) at info.magnolia.cms.filters.MgnlCmsFilter.doFilter (MgnlCmsFilter.java:106) at info.magnolia.cms.filters.MagnoliaManagedFilter $CustomFilterChain.doFilter(MagnoliaManagedFilter.java:92) at info.magnolia.cms.cache.CacheFilter.doFilter (CacheFilter.java:77) at info.magnolia.cms.filters.MagnoliaManagedFilter $CustomFilterChain.doFilter(MagnoliaManagedFilter.java:92) at info.magnolia.cms.filters.MgnlInterceptFilter.doFilter (MgnlInterceptFilter.java:130) at info.magnolia.cms.filters.MagnoliaManagedFilter $CustomFilterChain.doFilter(MagnoliaManagedFilter.java:92) at info.magnolia.cms.filters.MgnlContextFilter.doFilter (MgnlContextFilter.java:45) at info.magnolia.cms.filters.MagnoliaManagedFilter $CustomFilterChain.doFilter(MagnoliaManagedFilter.java:92) at info.magnolia.cms.security.SecurityFilter.doFilter (SecurityFilter.java:101) at info.magnolia.cms.filters.MagnoliaManagedFilter $CustomFilterChain.doFilter(MagnoliaManagedFilter.java:92) at info.magnolia.cms.filters.MultipartRequestFilter.doFilter (MultipartRequestFilter.java:80) at info.magnolia.cms.filters.MagnoliaManagedFilter $CustomFilterChain.doFilter(MagnoliaManagedFilter.java:92) at info.magnolia.cms.filters.MgnlVirtualUriFilter.doFilter (MgnlVirtualUriFilter.java:83) at info.magnolia.cms.filters.MagnoliaManagedFilter $CustomFilterChain.doFilter(MagnoliaManagedFilter.java:92) at info.magnolia.cms.filters.ContentTypeFilter.doFilter (ContentTypeFilter.java:66) at info.magnolia.cms.filters.MagnoliaManagedFilter $CustomFilterChain.doFilter(MagnoliaManagedFilter.java:92) at info.magnolia.cms.filters.MagnoliaManagedFilter.doFilter (MagnoliaManagedFilter.java:65) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:186) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:157) at org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:214) at org.apache.catalina.core.StandardValveContext.invokeNext (StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:520) at org.apache.catalina.core.StandardContextValve.invokeInternal (StandardContextValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:152) at org.apache.catalina.core.StandardValveContext.invokeNext (StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:520) at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:137) at org.apache.catalina.core.StandardValveContext.invokeNext (StandardValveContext.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:118) at org.apache.catalina.core.StandardValveContext.invokeNext (StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:520) at org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:109) at org.apache.catalina.core.StandardValveContext.invokeNext (StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:520) at org.apache.catalina.core.ContainerBase.invoke (ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service (CoyoteAdapter.java:160) at org.apache.jk.server.JkCoyoteHandler.invoke (JkCoyoteHandler.java:300) at org.apache.jk.common.HandlerRequest.invoke (HandlerRequest.java:374) at org.apache.jk.common.ChannelSocket.invoke (ChannelSocket.java:743) at org.apache.jk.common.ChannelSocket.processConnection (ChannelSocket.java:675) at org.apache.jk.common.SocketConnection.runIt (ChannelSocket.java:866) at org.apache.tomcat.util.threads.ThreadPool $ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:613)




On 04.02.2008, at 04:12, David Smith wrote:

Hi Thomas. Could you post the whole stack trace to your ClientAbortException including root cause? This may not have anything to do with the persistence layer, but with firewalls or bad network equipment interrupting the transfer.

--David

Thomas Martin wrote:

Hello Claudio

Thanks for the input.

Unfortunately I'm not clear where I would configure the connection string or timeout setting.

Any further explanation is highly appreciated.

File sizes range between 200k to 10MB.

Tx, Thomas





On 31.01.2008, at 09:26, Claudio Greuter wrote:

Hi Thomas

I use Magnolia in combination with MYSQL, not Derby or BDB. However I had a similar exception in my logs once, caused by database disconnects.

I managed to get rid of them by specifying "Autoreconnect=true" in the connection string. However I don't know if you could do the same on
Derby or BDB.

Is there some sort of timeout setting for the Derby or BDB? Does it only
happen with bigger files?

Hth
Claudio

-----Original Message-----
From: [email protected] [mailto:[EMAIL PROTECTED]
Sent: Freitag, 25. Januar 2008 15:50
To: [email protected]
Subject: [magnolia-user] ClientAbortException: java.net.SocketException:
Broken pipe

Hi List

I have a rather puzzling issue that arises in multiple projects:
whenever I try to pull downloads from the dms I get a

ClientAbortException:  java.net.SocketException: Broken pipe

and as a result a corrupted file in the download. It happens with
different files (zip/pdf/mov) in different projects.

Magnolia Version: 3.0.2 with BDB and 3.0.5 with derby on different
OS's (linux/OSX)



Can someone give me a clue how to avoid this?

TIA for any pointer!
Thomas



----------------------------------------------------------------
for list details see
http://documentation.magnolia.info/docs/en/editor/stayupdated.html
----------------------------------------------------------------

----------------------------------------------------------------
for list details see
http://documentation.magnolia.info/docs/en/editor/stayupdated.html
----------------------------------------------------------------




----------------------------------------------------------------
for list details see
http://documentation.magnolia.info/docs/en/editor/stayupdated.html
----------------------------------------------------------------

Reply via email to