You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "vinay naik (JIRA)" <ji...@apache.org> on 2011/01/27 11:07:45 UTC

[jira] Created: (WW-3567) File Upload fails for multiple clicks

File Upload fails for multiple clicks
-------------------------------------

                 Key: WW-3567
                 URL: https://issues.apache.org/jira/browse/WW-3567
             Project: Struts 2
          Issue Type: Bug
    Affects Versions: 2.1.8
            Reporter: vinay naik


We are getting the following exception when we upload a document & click on "Submit" button multiple times quickly.  We are setting request type to multipart & we have token interceptor in place to handle multiple submissions of the same request. However we have found out that the application fails even before reaching the first interceptor in interceptor stack. I suspect that the FileUploadBase class is trying to access the file input stream simultaneously in two threads causing the IOFileUploadException. In this case the token name & token value comes as null in first interceptor.

This works properly when we don't upload any file & clicks "Submit" multiple times quickly.


[1/26/11 22:48:00:844 EST] 00000732 Dispatcher    I com.opensymphony.xwork2.util.logging.commons.CommonsLogger info Unable to find 'struts.multipart.saveDir' property setting. Defaulting to javax.servlet.context.tempdir
[1/26/11 22:48:02:331 EST] 00000732 MultiPartRequ W com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn Unable to parse request
                                 org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. Async IO operation failed, reason: RC: 55  The specified network resource or device is no longer available.

                at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:367)
                at org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest.parse(JakartaMultiPartRequest.java:93)
                at org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper.<init>(MultiPartRequestWrapper.java:75)
                at org.apache.struts2.dispatcher.Dispatcher.wrapRequest(Dispatcher.java:708)
                at org.apache.struts2.dispatcher.FilterDispatcher.prepareDispatcherAndWrapRequest(FilterDispatcher.java:327)
                at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:367)
                at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
                at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
                at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
                at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:832)
                at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:742)
                at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:695)
                at com.ibm.ws.wswebcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:101)
                at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.invokeFilters(DefaultExtensionProcessor.java:833)
                at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:771)
                at com.ibm.ws.wswebcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:113)
                at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3444)
                at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:267)
                at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:815)
                at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1466)
                at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:119)
                at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458)
                at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387)
                at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102)
                at com.ibm.ws.ssl.channel.impl.SSLReadServiceContext$SSLReadCompletedCallback.complete(SSLReadServiceContext.java:1818)
                at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
                at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
                at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
                at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
                at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195)
                at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743)
                at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873)
                at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)
Caused by: java.io.IOException: Async IO operation failed, reason: RC: 55  The specified network resource or device is no longer available.

                at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:671)
                ... 2 more



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] [Closed] (WW-3567) File Upload fails for multiple clicks

Posted by "Lukasz Lenart (Closed) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/WW-3567?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Lukasz Lenart closed WW-3567.
-----------------------------

       Resolution: Won't Fix
    Fix Version/s: 2.1.8
    
> File Upload fails for multiple clicks
> -------------------------------------
>
>                 Key: WW-3567
>                 URL: https://issues.apache.org/jira/browse/WW-3567
>             Project: Struts 2
>          Issue Type: Bug
>    Affects Versions: 2.1.8
>            Reporter: vinay naik
>             Fix For: 2.1.8
>
>
> We are getting the following exception when we upload a document & click on "Submit" button multiple times quickly.  We are setting request type to multipart & we have token interceptor in place to handle multiple submissions of the same request. However we have found out that the application fails even before reaching the first interceptor in interceptor stack. I suspect that the FileUploadBase class is trying to access the file input stream simultaneously in two threads causing the IOFileUploadException. In this case the token name & token value comes as null in first interceptor.
> This works properly when we don't upload any file & clicks "Submit" multiple times quickly.
> [1/26/11 22:48:00:844 EST] 00000732 Dispatcher    I com.opensymphony.xwork2.util.logging.commons.CommonsLogger info Unable to find 'struts.multipart.saveDir' property setting. Defaulting to javax.servlet.context.tempdir
> [1/26/11 22:48:02:331 EST] 00000732 MultiPartRequ W com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn Unable to parse request
>                                  org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. Async IO operation failed, reason: RC: 55  The specified network resource or device is no longer available.
>                 at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:367)
>                 at org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest.parse(JakartaMultiPartRequest.java:93)
>                 at org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper.<init>(MultiPartRequestWrapper.java:75)
>                 at org.apache.struts2.dispatcher.Dispatcher.wrapRequest(Dispatcher.java:708)
>                 at org.apache.struts2.dispatcher.FilterDispatcher.prepareDispatcherAndWrapRequest(FilterDispatcher.java:327)
>                 at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:367)
>                 at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
>                 at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
>                 at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
>                 at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:832)
>                 at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:742)
>                 at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:695)
>                 at com.ibm.ws.wswebcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:101)
>                 at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.invokeFilters(DefaultExtensionProcessor.java:833)
>                 at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:771)
>                 at com.ibm.ws.wswebcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:113)
>                 at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3444)
>                 at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:267)
>                 at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:815)
>                 at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1466)
>                 at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:119)
>                 at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458)
>                 at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387)
>                 at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102)
>                 at com.ibm.ws.ssl.channel.impl.SSLReadServiceContext$SSLReadCompletedCallback.complete(SSLReadServiceContext.java:1818)
>                 at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
>                 at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
>                 at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
>                 at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
>                 at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195)
>                 at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743)
>                 at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873)
>                 at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)
> Caused by: java.io.IOException: Async IO operation failed, reason: RC: 55  The specified network resource or device is no longer available.
>                 at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:671)
>                 ... 2 more

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (WW-3567) File Upload fails for multiple clicks

Posted by "jagub zhang (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/WW-3567?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13052313#comment-13052313 ] 

jagub zhang commented on WW-3567:
---------------------------------

I did it, but no any exception happend.
I think it was IBM Http Server 's bug.

http://www.coderanch.com/t/59427/Struts/Struts-File-upload

> File Upload fails for multiple clicks
> -------------------------------------
>
>                 Key: WW-3567
>                 URL: https://issues.apache.org/jira/browse/WW-3567
>             Project: Struts 2
>          Issue Type: Bug
>    Affects Versions: 2.1.8
>            Reporter: vinay naik
>
> We are getting the following exception when we upload a document & click on "Submit" button multiple times quickly.  We are setting request type to multipart & we have token interceptor in place to handle multiple submissions of the same request. However we have found out that the application fails even before reaching the first interceptor in interceptor stack. I suspect that the FileUploadBase class is trying to access the file input stream simultaneously in two threads causing the IOFileUploadException. In this case the token name & token value comes as null in first interceptor.
> This works properly when we don't upload any file & clicks "Submit" multiple times quickly.
> [1/26/11 22:48:00:844 EST] 00000732 Dispatcher    I com.opensymphony.xwork2.util.logging.commons.CommonsLogger info Unable to find 'struts.multipart.saveDir' property setting. Defaulting to javax.servlet.context.tempdir
> [1/26/11 22:48:02:331 EST] 00000732 MultiPartRequ W com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn Unable to parse request
>                                  org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. Async IO operation failed, reason: RC: 55  The specified network resource or device is no longer available.
>                 at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:367)
>                 at org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest.parse(JakartaMultiPartRequest.java:93)
>                 at org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper.<init>(MultiPartRequestWrapper.java:75)
>                 at org.apache.struts2.dispatcher.Dispatcher.wrapRequest(Dispatcher.java:708)
>                 at org.apache.struts2.dispatcher.FilterDispatcher.prepareDispatcherAndWrapRequest(FilterDispatcher.java:327)
>                 at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:367)
>                 at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
>                 at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
>                 at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
>                 at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:832)
>                 at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:742)
>                 at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:695)
>                 at com.ibm.ws.wswebcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:101)
>                 at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.invokeFilters(DefaultExtensionProcessor.java:833)
>                 at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:771)
>                 at com.ibm.ws.wswebcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:113)
>                 at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3444)
>                 at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:267)
>                 at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:815)
>                 at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1466)
>                 at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:119)
>                 at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458)
>                 at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387)
>                 at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102)
>                 at com.ibm.ws.ssl.channel.impl.SSLReadServiceContext$SSLReadCompletedCallback.complete(SSLReadServiceContext.java:1818)
>                 at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
>                 at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
>                 at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
>                 at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
>                 at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195)
>                 at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743)
>                 at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873)
>                 at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)
> Caused by: java.io.IOException: Async IO operation failed, reason: RC: 55  The specified network resource or device is no longer available.
>                 at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:671)
>                 ... 2 more

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira