UIMA AS Aggregate Client sends FreeCas requests to a wrong broker

Details

Description

When a remote Cas Multiplier input queue is managed by a different broker than its aggregate client's input queue, requests to free CAS are sent to a wrong broker. The aggregate client attempts to send it to a broker that manages its input queue instead of the broker that manages the CM queues. The result of this attempt is an exception:

4/23/10 4:52:37 PM - 51: org.apache.uima.adapter.jms.activemq.JmsEndpointConnection_impl.send: WARNING:
javax.jms.InvalidDestinationException: Cannot publish to a deleted Destination: temp-queue://ID:bj-55263-1272055444334-0:2:1
at org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java:1597)
at org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:227)
at org.apache.activemq.ActiveMQMessageProducerSupport.send(ActiveMQMessageProducerSupport.java:300)
at org.apache.uima.adapter.jms.activemq.JmsEndpointConnection_impl.send(JmsEndpointConnection_impl.java:552)
at org.apache.uima.adapter.jms.activemq.JmsOutputChannel.sendRequest(JmsOutputChannel.java:564)
at org.apache.uima.aae.controller.AggregateAnalysisEngineController_impl.finalStep(AggregateAnalysisEngineController_impl.java:1758)
at org.apache.uima.aae.controller.AggregateAnalysisEngineController_impl.executeFlowStep(AggregateAnalysisEngineController_impl.java:2172)
at org.apache.uima.aae.controller.AggregateAnalysisEngineController_impl.process(AggregateAnalysisEngineController_impl.java:1206)
at org.apache.uima.aae.handler.HandlerBase.invokeProcess(HandlerBase.java:118)
at org.apache.uima.aae.handler.input.ProcessResponseHandler.cancelTimerAndProcess(ProcessResponseHandler.java:109)
at org.apache.uima.aae.handler.input.ProcessResponseHandler.handleProcessResponseWithCASReference(ProcessResponseHandler.java:381)
at org.apache.uima.aae.handler.input.ProcessResponseHandler.handle(ProcessResponseHandler.java:645)
at org.apache.uima.aae.handler.HandlerBase.delegate(HandlerBase.java:149)
at org.apache.uima.aae.handler.input.ProcessRequestHandler_impl.handle(ProcessRequestHandler_impl.java:987)
at org.apache.uima.aae.spi.transport.vm.UimaVmMessageListener.onMessage(UimaVmMessageListener.java:107)
at org.apache.uima.aae.spi.transport.vm.UimaVmMessageDispatcher$1.run(UimaVmMessageDispatcher.java:70)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)

Since the Free Cas requests are never delivered to a Cas Multiplier, the entire system hangs due to exhausted Cas Pool in the CM.