I have just spotted that this memory leak can be fixed by changing below
lines (in ConsumerProcessor)

                    boolean result = cont.suspend(suspentionTime);
                    exchange = exchanges.remove(exchange.getExchangeId());
                    if (!result) {
                        throw new Exception("Error sending exchange:
aborted");
                    }

to
                    boolean result = cont.suspend(suspentionTime);
                    exchange = exchanges.remove(exchange.getExchangeId());
                    if (!result) {
                        locks.remove(exchange.getExchangeId());
                        throw new Exception("Error sending exchange:
aborted");
                    }

locks map needs to be cleaned up (this is exactly done ine http:consumer).
Well, actually IMO method
org.apache.servicemix.http.processors.ConsumerProcessor.process(MessageExchange)
is not thread safe: continuation could be obtained there but when the method
enters synchronized block timeout could occur - so when exchanges map is
filled no one will pick it up.

-- 
View this message in context: 
http://www.nabble.com/http-endpoint-issues-tp17562872p17588264.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to