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)