Balazs Zsoldos created FELIX-4840:
-------------------------------------

             Summary: Asynchronous IO fails in webconsole plugin
                 Key: FELIX-4840
                 URL: https://issues.apache.org/jira/browse/FELIX-4840
             Project: Felix
          Issue Type: Bug
          Components: Web Console
    Affects Versions: webconsole-4.2.8
            Reporter: Balazs Zsoldos


*Issue*

The following function call always returns with true:

{code:java}
ServletRequest.isAsyncSupported()
{code}

However, async calls fail even if the webconsole plugin tries to provide some 
resource (with some special extension on the end of the URI).

*Reason*

In the end of the _OSGiManager.service(ServletRequest, ServletResponse)_ 
function, there is the following:

{code:java}
        // ensure response has been sent back and response is committed
        // (we are authorative for our URL space and no other servlet should 
interfere)
        res.flushBuffer();
{code}

Due to the reason that _flushBuffer()_ function is called, any asynchronous 
handling will fail with an exception.

*Proposed solution*

 - In case the webconsole plugin is rendered (the path ends with / or .html), 
the _request.isAsyncSupported()_ method call should return false
 - In case a custom resource is provided by the webconsole plugin (any 
extension but html on the end of the path) the _flushBuffer()_ method should 
not be called

At least the second part of the fix should be implemented as if a plugin wants 
to provide bigger files (like a dump), async support can be useful. Also, by 
the time more and more libraries will support asynchronous IO to provide 
resources and if a webconsole plugin uses such library, it will fail.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to