[
https://issues.apache.org/activemq/browse/SM-1407?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=45618#action_45618
]
Guillaume Nodet commented on SM-1407:
-------------------------------------
In case of a timeout, the component should send back an error to indicate that
there was a problem, else the answer will be completely lost. In the current
code, the fact that the HTTP request has timed out before the exchange comes
back result in the continuation object being removed from the locks map. When
the exchange comes back later, an exception is thrown in the
process(MessageExchange) method which will result in an ERROR status being sent
by the component for this exchange.
This critical method either send an exception (which will result in an error on
the exchange) or call cont.resume() which will trigger a new call to
process(HttpServletRequest request, HttpServletResponse response) or unblock
the call to cont.suspend(timeout) depending if the jetty connector is an NIO
connector or a BIO connector.
Btw, I've written lots of comments in the HttpConsumerEndpoint
(https://svn.apache.org/repos/asf/servicemix/components/bindings/servicemix-http/trunk/src/main/java/org/apache/servicemix/http/endpoints/HttpConsumerEndpoint.java)
which uses the exact same logic and done some testing using the
ConsumerEndpointTest#testHttpInOutUnderLoad() and it seems to work fine.
Could you set up a test case to illustrate the problem or provide more
informations ?
> Memory Leak in http consumer processor when a timeout occurs
> ------------------------------------------------------------
>
> Key: SM-1407
> URL: https://issues.apache.org/activemq/browse/SM-1407
> Project: ServiceMix
> Issue Type: Bug
> Components: servicemix-http
> Reporter: Guillaume Nodet
> Assignee: Guillaume Nodet
> Fix For: 3.2.2, 3.3
>
> Attachments: ConsumerProcessor.java
>
>
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.