Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.3AS
-
None
Description
The initialize time out if a failover broker uri with multiple endpoints is used e.g.:
failover:(tcp://XXX1:61616,tcp://XXX2:61616)?randomize=false
On the client side it results in a time out exception:
Caused by: org.apache.uima.resource.ResourceInitializationException
at org.apache.uima.adapter.jms.client.BaseUIMAAsynchronousEngine_impl.initialize(BaseUIMAAsynchronousEngine_impl.java:637)
at org.apache.uima.camel.UimaAsProducer.<init>(UimaAsProducer.java:142)
at org.apache.uima.camel.UimaAsEndpoint.createProducer(UimaAsEndpoint.java:89)
at org.apache.camel.processor.SendProcessor.doStart(SendProcessor.java:93)
at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:49)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:42)
at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:53)
at org.apache.camel.processor.DelegateProcessor.doStart(DelegateProcessor.java:68)
at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:49)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:42)
at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:53)
at org.apache.camel.processor.DelegateProcessor.doStart(DelegateProcessor.java:68)
at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:49)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:42)
at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:53)
at org.apache.camel.processor.DelegateProcessor.doStart(DelegateProcessor.java:68)
at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:49)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:42)
at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:53)
at org.apache.camel.processor.DelegateAsyncProcessor.doStart(DelegateAsyncProcessor.java:54)
at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:49)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:42)
at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:53)
at org.apache.camel.impl.DefaultConsumer.doStart(DefaultConsumer.java:85)
at org.apache.camel.component.jms.JmsConsumer.doStart(JmsConsumer.java:58)
at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:49)
at org.apache.camel.impl.DefaultCamelContext.addService(DefaultCamelContext.java:422)
at org.apache.camel.impl.DefaultCamelContext.startRoutes(DefaultCamelContext.java:664)
at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:635)
at org.apache.camel.spring.SpringCamelContext.maybeDoStart(SpringCamelContext.java:166)
at org.apache.camel.spring.SpringCamelContext.doStart(SpringCamelContext.java:161)
at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:49)
at org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:96)
at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:115)
... 12 more
Caused by: org.apache.uima.aae.error.UimaASMetaRequestTimeout
... 46 more
And on the worker node it results in this exception:
rg.apache.uima.aae.error.AsynchAEException: javax.jms.JMSException: Could not create Transport. Reason: java.lang.IllegalArgumentException: Invalid connect parameters:
at org.apache.uima.adapter.jms.activemq.JmsEndpointConnection_impl.openChannel(JmsEndpointConnection_impl.java:284)
at org.apache.uima.adapter.jms.activemq.JmsEndpointConnection_impl.openChannel(JmsEndpointConnection_impl.java:147)
at org.apache.uima.adapter.jms.activemq.JmsEndpointConnection_impl.open(JmsEndpointConnection_impl.java:301)
at org.apache.uima.adapter.jms.activemq.JmsEndpointConnection_impl.open(JmsEndpointConnection_impl.java:290)
at org.apache.uima.adapter.jms.activemq.JmsOutputChannel.getEndpointConnection(JmsOutputChannel.java:493)
at org.apache.uima.adapter.jms.activemq.JmsOutputChannel.sendReply(JmsOutputChannel.java:1153)
at org.apache.uima.aae.controller.BaseAnalysisEngineController.sendMetadata(BaseAnalysisEngineController.java:2627)
at org.apache.uima.aae.controller.AggregateAnalysisEngineController_impl.sendMetadata(AggregateAnalysisEngineController_impl.java:2585)
at org.apache.uima.aae.handler.input.MetadataRequestHandler_impl.handle(MetadataRequestHandler_impl.java:69)
at org.apache.uima.adapter.jms.activemq.JmsInputChannel.onMessage(JmsInputChannel.java:643)
at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:518)
at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:479)
at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:451)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:261)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:982)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:974)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:876)
at java.lang.Thread.run(Thread.java:619)
Caused by: javax.jms.JMSException: Could not create Transport. Reason: java.lang.IllegalArgumentException: Invalid connect parameters: {randomize=false}
at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:35)
at org.apache.activemq.ActiveMQConnectionFactory.createTransport(ActiveMQConnectionFactory.java:242)
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:255)
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:227)
at org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:175)
at org.apache.uima.adapter.jms.activemq.JmsEndpointConnection_impl.openChannel(JmsEndpointConnection_impl.java:195)
... 18 more
Caused by: java.lang.IllegalArgumentException: Invalid connect parameters:
at org.apache.activemq.transport.TransportFactory.doConnect(TransportFactory.java:144)
at org.apache.activemq.transport.TransportFactory.doConnect(TransportFactory.java:51)
at org.apache.activemq.transport.TransportFactory.connect(TransportFactory.java:80)
at org.apache.activemq.ActiveMQConnectionFactory.createTransport(ActiveMQConnectionFactory.java:240)
... 22 more
It looks like that JmsMessageContext.chooseServerUri transform it
from
failover:(tcp://XXX1:61616,tcp://XXX2:61616)?randomize=false
into
tcp://XXX2:61616)?randomize=false
which is then later rejected.
The removal of the call to chooseServerUir fixed the problem in my particular case, but might fail
if http is used.