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

Jerry Cwiklik updated UIMA-1902:
--------------------------------

    Summary: UIMA AS detection of missing client reply queue is not working 
leading to client timeouts  (was: UIMA AS should send an ACK message to a 
client for each request)

> UIMA AS detection of missing client reply queue is not working leading to 
> client timeouts
> -----------------------------------------------------------------------------------------
>
>                 Key: UIMA-1902
>                 URL: https://issues.apache.org/jira/browse/UIMA-1902
>             Project: UIMA
>          Issue Type: Bug
>          Components: Async Scaleout
>    Affects Versions: 2.3AS
>            Reporter: Jerry Cwiklik
>            Assignee: Jerry Cwiklik
>
> UIMA AS service checks for existence of a reply queue before processing an 
> incoming request. This is done to prevent wasting cycles processing a request 
> if it is known that the client has gone away. Current approach is based on 
> checking broker's queue inventory for presence of a temp reply queue provided 
> in a request msg.  The framework code uses JMX connection to a broker to 
> perform the queue lookup. If the lookup fails, the framework concludes that 
> the client has gone away, places the reply queue in a list of destinations 
> known to be dead and throws away the request msg. Any subsequent msg 
> containing the same reply queue is automatically thrown away since the 
> destination is marked as dead. Occasionally, the JMX lookup fails even though 
> (as reported by some users) the client is alive at the time the lookup was 
> done. It seems that perhaps under load JMX fails apart, reporting false 
> positive result ( queue not present). The failed lookup results in a dropped 
> request msg and ultimately in a client timeout (or possible hang if the 
> client is not using timout). 
> Modify the implementation to stop using JMX to perform lookups. Instead, 
> before any processing takes place, send a small msg (ACK) back to the client 
> via JMS. If the send fails, report the problem, drop the request and wait for 
> the next request. Also, dont add failed destination to the list of clients 
> known to be dead. Each request should be subject to an ACK no matter what 
> happened previously.
> The new approach, although generating more jms traffic, has some advantages:
> 1) A client is immediately notified when its request has been picked by a 
> service and is ready to be processed.
> 2) A client "knows" which service is processing each request
> 3) A client can use a different timeout strategy since it knows precisely 
> when its request is ready to be processed.  

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

Reply via email to