Article - CS378234

Randomly unable to download large files from Windchill PDMLink

Modified: 29-Mar-2024   


Applies To

  • Windchill PDMLink 11.1 to 12.1
  • PTC Cloud Installations deployed using the Amazon CLB (deployed Spring/Summer 2023 or earlier)

Description

  • Unable to download larger sized files (typically larger than 350MB)
  • Unable to download the files larger than 600MB
  • Content download of large files randomly fails
  • During content downloads, the Amazon Classic Load Balancer (CLB) may reset network connections with the Windchill server
  • Apache access log shows only part of large files being downloaded (usually around 350-600MB) and the file being requested again but failing with a 500 response:
<IP date time> "GET /Windchill/servlet/WindchillGW/wt.fv.master.StandardMasterService/doDirectDownload/<filename>?folderId=####&ft=FF&userid=####&adId=####&fileName=####&refsize=<large file size in bytes>&mime=application/zip&mk=wt.fv.master.StandardMasterService&ofn=<filename>&c=8&riid=-1&sT=####&sign=####%3D&site=https%3A%2F%2F<site>%2FWindchill%2Fservlet%2FWindchillGW&AUTH_CODE=HmacSHA256&isProxy=true HTTP/1.1" 200 <smaller file size around 350-600MB> 3239687

<IP date time> "GET /Windchill/servlet/WindchillGW/wt.fv.master.StandardMasterService/doDirectDownload/<filename>?folderId=####&ft=FF&userid=####&adId=####&fileName=####&refsize=<large file size in bytes>&mime=application/zip&mk=wt.fv.master.StandardMasterService&ofn=<filename>&c=8&riid=-1&sT=####&sign=<same signature #### >%3D&site=https%3A%2F%2F<site>%2FWindchill%2Fservlet%2FWindchillGW&AUTH_CODE=HmacSHA256&isProxy=true HTTP/1.1" 500 999 5384
  • Methodserver log reports errors downloading:
ERROR [ajp-nio-127.0.0.1-8010-exec-3] wt.fv.master  - Error in doDirectDownload
org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
	at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:371)
	at org.apache.catalina.connector.OutputBuffer.flushByteBuffer(OutputBuffer.java:845)
	at org.apache.catalina.connector.OutputBuffer.append(OutputBuffer.java:750)
	at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:406)
	at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:384)
	at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:96)
	at wt.servlet.ServletRequestMonitor$CountingOutputStream.write(ServletRequestMonitor.java:2388)
	at wt.servlet.CompressionFilter$GzippingResponse$GzipAsAppropStream.write(CompressionFilter.java:687)
	at wt.fv.master.StandardMasterService.doDirectDownload(StandardMasterService.java:3400)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at wt.httpgw.HTTPServletResponse.invoke(HTTPServletResponse.java:264)
	at wt.httpgw.MethodRequestHandler.handleRequest(MethodRequestHandler.java:92)
	at wt.httpgw.HTTPGatewayServlet.serviceWithoutFilters(HTTPGatewayServlet.java:336)
	at wt.httpgw.FilterChainImpl.doFilter(FilterChainImpl.java:94)
	at wt.session.SessionContextDestroyer.doFilterInternal(SessionContextDestroyer.java:136)
	at wt.session.SessionContextDestroyer.doFilter(SessionContextDestroyer.java:184)
	at wt.httpgw.FilterChainImpl.doFilter(FilterChainImpl.java:81)
	at wt.httpgw.HTTPGatewayServlet.service(HTTPGatewayServlet.java:235)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at wt.licenseusage.licensing.LicenseFilter.doFilter(LicenseFilter.java:47)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.ptc.jws.servlet.filter.WsdlServletFilter.doFilter(WsdlServletFilter.java:80)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.ptc.core.ui.validation.URLValidationFilter.doFilter(URLValidationFilter.java:85)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at wt.httpgw.filter.WTContextBeanFilter.doWithWtContextBeanHandler(WTContextBeanFilter.java:104)
	at wt.httpgw.filter.WTContextBeanFilter.doFilter(WTContextBeanFilter.java:58)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at wt.servlet.CompressionFilter.doFilter(CompressionFilter.java:301)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at wt.servlet.RequestInterrupter.doFilter(RequestInterrupter.java:335)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at wt.servlet.ServletRequestMonitor.doFilter(ServletRequestMonitor.java:1660)
	at wt.servlet.ServletRequestMonitorFilter.doFilter(ServletRequestMonitorFilter.java:56)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:126)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.filters.CorsFilter.handleNonCORS(CorsFilter.java:368)
	at org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:174)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:367)
	at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:526)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:882)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1657)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: Broken pipe
	at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
	at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
	at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
	at sun.nio.ch.IOUtil.write(IOUtil.java:65)
	at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471)
	at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:135)
	at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWrite(NioEndpoint.java:1294)
	at org.apache.tomcat.util.net.SocketWrapperBase.doWrite(SocketWrapperBase.java:773)
	at org.apache.tomcat.util.net.SocketWrapperBase.flushBlocking(SocketWrapperBase.java:726)
	at org.apache.tomcat.util.net.SocketWrapperBase.flush(SocketWrapperBase.java:716)
	at org.apache.coyote.ajp.AjpProcessor.writeData(AjpProcessor.java:1395)
	at org.apache.coyote.ajp.AjpProcessor.access$900(AjpProcessor.java:60)
	at org.apache.coyote.ajp.AjpProcessor$SocketOutputBuffer.doWrite(AjpProcessor.java:1521)
	at org.apache.coyote.Response.doWrite(Response.java:614)
	at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:358)
	... 69 more
ERROR [ajp-nio-127.0.0.1-8010-exec-3] wt.method.server.httpgw  - Exception when attempting to set response status of 500 [java.io.IOException: Broken pipe]
java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
	at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:454)
	at wt.servlet.ServletRequestMonitor$BaseHttpResponseWrapper.sendError(ServletRequestMonitor.java:2679)
	at wt.servlet.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:102)
	at wt.servlet.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:102)
	at wt.servlet.CompressionFilter$GzippingResponse.sendError(CompressionFilter.java:577)
	at wt.httpgw.HTTPServletResponse.setStatus(HTTPServletResponse.java:233)
	at wt.fv.master.StandardMasterService.doDirectDownload(StandardMasterService.java:3459)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at wt.httpgw.HTTPServletResponse.invoke(HTTPServletResponse.java:264)
	at wt.httpgw.MethodRequestHandler.handleRequest(MethodRequestHandler.java:92)
	at wt.httpgw.HTTPGatewayServlet.serviceWithoutFilters(HTTPGatewayServlet.java:336)
	at wt.httpgw.FilterChainImpl.doFilter(FilterChainImpl.java:94)
	at wt.session.SessionContextDestroyer.doFilterInternal(SessionContextDestroyer.java:136)
	at wt.session.SessionContextDestroyer.doFilter(SessionContextDestroyer.java:184)
	at wt.httpgw.FilterChainImpl.doFilter(FilterChainImpl.java:81)
	at wt.httpgw.HTTPGatewayServlet.service(HTTPGatewayServlet.java:235)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at wt.licenseusage.licensing.LicenseFilter.doFilter(LicenseFilter.java:47)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.ptc.jws.servlet.filter.WsdlServletFilter.doFilter(WsdlServletFilter.java:80)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.ptc.core.ui.validation.URLValidationFilter.doFilter(URLValidationFilter.java:85)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at wt.httpgw.filter.WTContextBeanFilter.doWithWtContextBeanHandler(WTContextBeanFilter.java:104)
	at wt.httpgw.filter.WTContextBeanFilter.doFilter(WTContextBeanFilter.java:58)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at wt.servlet.CompressionFilter.doFilter(CompressionFilter.java:301)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at wt.servlet.RequestInterrupter.doFilter(RequestInterrupter.java:335)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at wt.servlet.ServletRequestMonitor.doFilter(ServletRequestMonitor.java:1660)
	at wt.servlet.ServletRequestMonitorFilter.doFilter(ServletRequestMonitorFilter.java:56)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:126)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.filters.CorsFilter.handleNonCORS(CorsFilter.java:368)
	at org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:174)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:367)
	at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:526)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:882)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1657)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)
This is a printer-friendly version of Article 378234 and may be out of date. For the latest version click CS378234