[ 
https://issues.apache.org/jira/browse/SYNAPSE-527?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andreas Veithen updated SYNAPSE-527:
------------------------------------

         Priority: Critical  (was: Minor)
    Fix Version/s: 1.3

Increasing the priority to critical because this issue may cause data loss and 
crash Synapse.

This happens in the following scenario:
- Modify sample 250 to forward using JMS instead of HTTP.
- Preload the queue of the proxy service with a large number of messages: ant 
jmsclient -Djms_type=pox -Djms_dest=dynamicQueues/StockQuoteProxy 
-Djms_payload=MSFT -Djms_msgcount=10000
- Start Synapse

On Mac OS X, the result is that Synapse will successfully process a certain 
number of messages (of order 1000), but then starts to trigger errors "Can't 
create thread: 5" and later fails with an out of memory error. The result is 
that messages are lost.

The workaround is to add the following mediator to the inSequence:

<property action="remove" name="transportNonBlocking" scope="axis2"/>

In that case, Synapse will gently forward all the messages.

> Transports use TRANSPORT_NON_BLOCKING in an incorrect way
> ---------------------------------------------------------
>
>                 Key: SYNAPSE-527
>                 URL: https://issues.apache.org/jira/browse/SYNAPSE-527
>             Project: Synapse
>          Issue Type: Bug
>          Components: Transports
>    Affects Versions: 1.2
>            Reporter: Andreas Veithen
>            Priority: Critical
>             Fix For: 1.3
>
>
> The TRANSPORT_NON_BLOCKING property is set on the message contexts for 
> incoming messages by ServerWorker#createMessageContext (NIO HTTP transport) 
> and AbstractTransportListener#createMessageContext. When the message is sent 
> out, Synapse copies this property over to the message context for the 
> outgoing message. This in turn has an impact on the threading behavior when 
> the message is sent: depending on the value of TRANSPORT_NON_BLOCKING, the 
> <send> mediator (more precisely the OperationClient) will invoke the outgoing 
> transport in a separate thread. It is not clear why the transport that 
> handles the incoming request should determine the threading behavior of the 
> transport that sends the outgoing request to the target service.
> See also http://markmail.org/message/6iuslkueny24po73

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


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to