You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by "Mark Ford (JIRA)" <ji...@apache.org> on 2010/07/06 14:16:51 UTC

[jira] Reopened: (CAMEL-1467) OutOfMemory Exception in XMPP Component

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

Mark Ford reopened CAMEL-1467:
------------------------------


The patch for this bug was removed in revision 779121. The result is that the XMPPConsumer does not remove the message from the MultiUserChat and the possibility for an OutOfMemoryException still exists.

The OOM occurs because the org.jivesoftware.smackx.muc.RoomListenerMultiplexor is a packet listener that contains a collector that stores all of the messages received up to a hard coded limit of 65k messages. These messages are not removed unless muc.pollMessage() or muc.nextMessage() is called. I'm not sure the reason behind storing these messages in a collector. 

I have tested this in 2.1.0 and 2.3.0 and reviewed the code in 2.4-SNAPSHOT. I can supply a test case if needed.


> OutOfMemory Exception in XMPP Component
> ---------------------------------------
>
>                 Key: CAMEL-1467
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-1467
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-xmpp
>         Environment: Mac OS 10.4.11, Java 1.5, Smack 3.0.4/3.1.0
>            Reporter: Orton Huang
>            Assignee: Claus Ibsen
>             Fix For: 1.6.1, 2.0-M2
>
>   Original Estimate: 5 minutes
>  Remaining Estimate: 5 minutes
>
> on publishing messages lots of messages using XMPP component (layered on top of Smack 3.0.4/3.1.0 client), Out of Memory Exception occurs. 
> With standard JVM settings, client runs out of memory at around 6600 messages sent. With -Xmx1024M set, client runs out at ~110K messages sent.
> Appears that on a
> chat.sendMessage(message);
> The server sends the message back and the messages needs to be processed on the client side or the client will continue filling its local queue until it runs out of memory
> FIX:
> For XmppPrivateChatProducer and XmppGroupChatProducer, need to insert chat.nextMessage() after chat.sendMessage()
>  public void process(Exchange exchange) {
>    ...
>         try {
>             chat.sendMessage(message);
>             chat.nextMessage();
>         } catch (XMPPException e) {
>             throw new RuntimeXmppException(e);
>         }
>     }

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