You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2010/07/14 06:35:15 UTC
svn commit: r963946 - in
/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp:
XmppBinding.java XmppComponent.java XmppConsumer.java
XmppGroupChatProducer.java XmppPrivateChatProducer.java
Author: davsclaus
Date: Wed Jul 14 04:35:15 2010
New Revision: 963946
URL: http://svn.apache.org/viewvc?rev=963946&view=rev
Log:
CAMEL-2922: Fixed issue with OutOfMemoryError due to bug in Smack. We must poll the recieved message in MultiUserChat.
Modified:
camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppBinding.java
camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppComponent.java
camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java
camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java
camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java
Modified: camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppBinding.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppBinding.java?rev=963946&r1=963945&r2=963946&view=diff
==============================================================================
--- camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppBinding.java (original)
+++ camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppBinding.java Wed Jul 14 04:35:15 2010
@@ -73,9 +73,13 @@ public class XmppBinding {
} else {
try {
message.setProperty(name, value);
- LOG.debug("Added property name: " + name + " value: " + value.toString());
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("Added property name: " + name + " value: " + value.toString());
+ }
} catch (IllegalArgumentException iae) {
- LOG.debug("Not adding property " + name + " to XMPP message due to " + iae);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Cannot add property " + name + " to XMPP message due: ", iae);
+ }
}
}
}
Modified: camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppComponent.java?rev=963946&r1=963945&r2=963946&view=diff
==============================================================================
--- camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppComponent.java (original)
+++ camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppComponent.java Wed Jul 14 04:35:15 2010
@@ -38,11 +38,15 @@ public class XmppComponent extends Defau
protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
if (endpointCache.containsKey(uri)) {
- LOG.debug("Using cached endpoint for URI " + uri);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Using cached endpoint for URI " + uri);
+ }
return endpointCache.get(uri);
}
- LOG.debug("Creating new endpoint for URI " + uri);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Creating new endpoint for URI " + uri);
+ }
XmppEndpoint endpoint = new XmppEndpoint(uri, this);
URI u = new URI(uri);
@@ -73,5 +77,6 @@ public class XmppComponent extends Defau
for (Map.Entry<String, XmppEndpoint> entry : endpointCache.entrySet()) {
entry.getValue().destroy();
}
+ endpointCache.clear();
}
}
Modified: camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java?rev=963946&r1=963945&r2=963946&view=diff
==============================================================================
--- camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java (original)
+++ camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java Wed Jul 14 04:35:15 2010
@@ -72,7 +72,7 @@ public class XmppConsumer extends Defaul
LOG.debug("Opening private chat to " + privateChat.getParticipant());
}
} else {
- // add the presence packet listener to the connection so we only get packets that concers us
+ // add the presence packet listener to the connection so we only get packets that concerns us
// we must add the listener before creating the muc
final ToContainsFilter toFilter = new ToContainsFilter(endpoint.getParticipant());
final AndFilter packetFilter = new AndFilter(new PacketTypeFilter(Presence.class), toFilter);
@@ -129,6 +129,13 @@ public class XmppConsumer extends Defaul
getProcessor().process(exchange);
} catch (Exception e) {
exchange.setException(e);
+ } finally {
+ // must remove message from muc to avoid messages stacking up and causing OutOfMemoryError
+ // pollMessage is a non blocking method
+ // (see http://issues.igniterealtime.org/browse/SMACK-129)
+ if (muc != null) {
+ muc.pollMessage();
+ }
}
}
}
Modified: camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java?rev=963946&r1=963945&r2=963946&view=diff
==============================================================================
--- camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java (original)
+++ camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java Wed Jul 14 04:35:15 2010
@@ -64,7 +64,7 @@ public class XmppGroupChatProducer exten
chat.sendMessage(message);
// must invoke nextMessage to consume the response from the server
// otherwise the client local queue will fill up (CAMEL-1467)
- chat.nextMessage();
+ chat.pollMessage();
} catch (XMPPException e) {
throw new RuntimeExchangeException("Cannot send XMPP message: " + message, exchange, e);
}
Modified: camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java?rev=963946&r1=963945&r2=963946&view=diff
==============================================================================
--- camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java (original)
+++ camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java Wed Jul 14 04:35:15 2010
@@ -43,7 +43,10 @@ public class XmppPrivateChatProducer ext
this.endpoint = endpoint;
this.participant = participant;
ObjectHelper.notEmpty(participant, "participant");
- LOG.debug("Creating XmppPrivateChatProducer to participant " + participant);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Creating XmppPrivateChatProducer to participant " + participant);
+ }
}
public void process(Exchange exchange) {
@@ -65,14 +68,21 @@ public class XmppPrivateChatProducer ext
}
ChatManager chatManager = connection.getChatManager();
- LOG.debug("Looking for existing chat instance with thread ID " + endpoint.getChatId());
+
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("Looking for existing chat instance with thread ID " + endpoint.getChatId());
+ }
Chat chat = chatManager.getThreadChat(endpoint.getChatId());
if (chat == null) {
- LOG.debug("Creating new chat instance with thread ID " + endpoint.getChatId());
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("Creating new chat instance with thread ID " + endpoint.getChatId());
+ }
chat = chatManager.createChat(getParticipant(), endpoint.getChatId(), new MessageListener() {
public void processMessage(Chat chat, Message message) {
// not here to do conversation
- LOG.debug("Received and discarding message from " + getParticipant() + " : " + message.getBody());
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Received and discarding message from " + getParticipant() + " : " + message.getBody());
+ }
}
});
}