You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Prakash Shetty (JIRA)" <ji...@apache.org> on 2013/04/09 17:02:17 UTC

[jira] [Commented] (CAMEL-6256) Camel xmpp dynamic router is not sending incoming messages to openfire upon first failed groupchatroom join

    [ https://issues.apache.org/jira/browse/CAMEL-6256?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13626687#comment-13626687 ] 

Prakash Shetty commented on CAMEL-6256:
---------------------------------------

I just debugged using source code. 
It looks like bug in XmppEndpoint.createConnection method. 

If no groupchat room is avalilable, then XmppGroupChatProducer's method doStart;  chat.join() statement will throw exception. 
Upon this exception, ServiceSupport.stop() is trggered. This triggers XmppGroupChatProducer's doStop() method.  Here it disconnects the connection and sets to null. Till here pretty much ok. 
But XmppEndpoint's connection variable still holds the old connection object and it is in disconnected and unauthorised state. 

For next successive messages, XmppEndpoint.createConnection will return the old connection object, but it is in disconnected state.
Because of this, always we will have connection with disconnected and unauthenticated state. 
So I feel 'createConnection' not only need to check  for null, but also it should also check for connected state and authenticated state. 


If anyone feels 'XmppEndpoint.createConnection' is very much correct, then we need to modify XMPPGroupChatProducer's doStart() or doStop() method. 

I still feel need to correct XmppEndpoint.createConnection  method changes. 

---
Exception is thrown for 2nd and later messages at  chat = new MultiUserChat(connection, room); statement of XmppGroupChatProducer's doStart() method. 
Exception says 'Not connected to the server'. So It means that we need to reconnect and authenticate it if disconnected from earlier unit of work.


                
> Camel xmpp dynamic router is not sending incoming messages to openfire upon first failed groupchatroom join
> -----------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-6256
>                 URL: https://issues.apache.org/jira/browse/CAMEL-6256
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-xmpp
>    Affects Versions: 2.10.3
>         Environment: camel xmpp routing with openfire xmpp server.  Used groupchat configurations
>            Reporter: Prakash Shetty
>            Priority: Critical
>              Labels: connection, groupchat, xmpp
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> Reference : http://camel.465427.n5.nabble.com/Camel-xmpp-dynamic-router-is-not-connecting-to-openfire-td5730506.html#a5730537
> {code:xml} 
> <camel:route id="eventSubscriber">
>                         <camel:from uri="ref:eventReceiverUri" />
>                          <camel:dynamicRouter>                  
>                     <camel:method ref="eventRouterBean" method="processEvent"/>
>                 </camel:dynamicRouter>
>                 </camel:route> 
> {code}
> In eventRouterBean's processEvent method, we are building xmpp groupchat room url depending upon the message and forwading the same message into respective groupchatrooms. 
> If resulting groupchat room is not existing, it will log message 
> WARN 2013-04-05 17:55:48,190 (UnitOfWorkProcessor.java processAsync:162) - Caught unhandled exception while processing ExchangeId: ID-INGBTCPIC8NB038-63130-1365164745141-0-3 
> org.apache.camel.FailedToCreateProducerException: Failed to create Producer for endpoint: Endpoint[xmpp://<ip>:5222/?password=******&resource=zone_4fc100e4-d004-4a0b-a7e2-7cf910585af6_51&room=zone_4fc100e4-d004-4a0b-a7e2-7cf910585af6_51%40conference.test.com&serviceName=ispf.com&user=messagepublisher%40test.com]. Reason: not-allowed(405) 
>         at org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:395) 
>         at org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:278) 
>         at org.apache.camel.processor.RoutingSlip.processExchange(RoutingSlip.java:280) 
>         at org.apache.camel.processor.RoutingSlip.doRoutingSlip(RoutingSlip.java:205) 
>         at org.apache.camel.processor.RoutingSlip.process(RoutingSlip.java:135) 
>         at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) 
>         at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) 
>         at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) 
>         at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73) 
>         at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) 
> and ...... 
> Caused by: not-allowed(405) 
>         at org.jivesoftware.smackx.muc.MultiUserChat.join(MultiUserChat.java:501) 
>         at org.apache.camel.component.xmpp.XmppGroupChatProducer.doStart(XmppGroupChatProducer.java:84) 
>         at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60) 
>         at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62) 
>         at org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:393) 
>         ... 40 more 
> This is still fine. 
> But issue is if I create a groupchat room in openfire, it should forward new incoming message to same groupchat room. But it is not forwarding.
> It is keep on logging error message as 'Not connected to the server' repeatedly for all messages.
> But if I restart the camel context, then it starts working. 
> Looks like it is caching url and its connection as not allowed in dynamic router. 
> What will be the solution? 
> And even the exception is thowing at ProducerCache.doGetProducer().. 
> So how to clear cache for failed connections?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira