Return-Path: X-Original-To: apmail-camel-commits-archive@www.apache.org Delivered-To: apmail-camel-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id A8DB2C9C7 for ; Mon, 3 Jun 2013 06:20:25 +0000 (UTC) Received: (qmail 39460 invoked by uid 500); 3 Jun 2013 06:20:24 -0000 Delivered-To: apmail-camel-commits-archive@camel.apache.org Received: (qmail 39396 invoked by uid 500); 3 Jun 2013 06:20:24 -0000 Mailing-List: contact commits-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@camel.apache.org Delivered-To: mailing list commits@camel.apache.org Received: (qmail 39001 invoked by uid 99); 3 Jun 2013 06:20:20 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 03 Jun 2013 06:20:20 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id D529B89F8AC; Mon, 3 Jun 2013 06:20:19 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: davsclaus@apache.org To: commits@camel.apache.org Date: Mon, 03 Jun 2013 06:20:21 -0000 Message-Id: <513779c48bc3450bb98060b56a1f12db@git.apache.org> In-Reply-To: <22da234eff384e69afc539f4e52858c3@git.apache.org> References: <22da234eff384e69afc539f4e52858c3@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [3/8] git commit: CAMEL-6197: Added disconnectLocalSession option to disconnect local sessions to avoid OOME. Thanks to Seb C for contribution. CAMEL-6197: Added disconnectLocalSession option to disconnect local sessions to avoid OOME. Thanks to Seb C for contribution. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/66750878 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/66750878 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/66750878 Branch: refs/heads/camel-2.11.x Commit: 6675087885ef7b4ed312b6f59f4ef6d342ac4815 Parents: afb2822 Author: Claus Ibsen Authored: Sun Jun 2 17:50:50 2013 +0200 Committer: Claus Ibsen Committed: Sun Jun 2 17:51:22 2013 +0200 ---------------------------------------------------------------------- .../camel/component/cometd/CometdEndpoint.java | 9 ++++++ .../camel/component/cometd/CometdProducer.java | 23 ++++++++++---- 2 files changed, 25 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/66750878/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdEndpoint.java ---------------------------------------------------------------------- diff --git a/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdEndpoint.java b/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdEndpoint.java index 7f30c36..2f4fb21 100644 --- a/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdEndpoint.java +++ b/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdEndpoint.java @@ -44,6 +44,7 @@ public class CometdEndpoint extends DefaultEndpoint { private boolean crossOriginFilterOn; private String allowedOrigins; private String filterPath; + private boolean disconnectLocalSession = true; public CometdEndpoint(CometdComponent component, String uri, String remaining, Map parameters) { super(uri, component); @@ -194,4 +195,12 @@ public class CometdEndpoint extends DefaultEndpoint { public void setFilterPath(String filterPath) { this.filterPath = filterPath; } + + public boolean isDisconnectLocalSession() { + return disconnectLocalSession; + } + + public void setDisconnectLocalSession(boolean disconnectLocalSession) { + this.disconnectLocalSession = disconnectLocalSession; + } } http://git-wip-us.apache.org/repos/asf/camel/blob/66750878/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdProducer.java ---------------------------------------------------------------------- diff --git a/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdProducer.java b/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdProducer.java index a077db0..a55bf81 100644 --- a/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdProducer.java +++ b/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdProducer.java @@ -50,7 +50,7 @@ public class CometdProducer extends DefaultProducer implements CometdProducerCon endpoint.connect(this); // should probably look into synchronization for this. if (service == null) { - service = new ProducerService(getBayeux(), new CometdBinding(bayeux), endpoint.getPath(), this); + service = new ProducerService(getBayeux(), new CometdBinding(bayeux), endpoint.getPath(), this, getEndpoint().isDisconnectLocalSession()); } } @@ -84,12 +84,14 @@ public class CometdProducer extends DefaultProducer implements CometdProducerCon private final CometdProducer producer; private final CometdBinding binding; + private final boolean disconnectLocalSession; public ProducerService(BayeuxServer bayeux, CometdBinding cometdBinding, String channel, - CometdProducer producer) { + CometdProducer producer, boolean disconnectLocalSession) { super(bayeux, channel); this.producer = producer; this.binding = cometdBinding; + this.disconnectLocalSession = disconnectLocalSession; } public void process(final Exchange exchange) { @@ -98,11 +100,18 @@ public class CometdProducer extends DefaultProducer implements CometdProducerCon ServerChannel channel = bayeux.getChannel(channelName); ServerSession serverSession = getServerSession(); - if (channel != null) { - logDelivery(exchange, channel); - ServerMessage.Mutable mutable = binding.createCometdMessage(channel, serverSession, - exchange.getIn()); - channel.publish(serverSession, mutable); + try { + if (channel != null) { + logDelivery(exchange, channel); + ServerMessage.Mutable mutable = binding.createCometdMessage(channel, serverSession, + exchange.getIn()); + channel.publish(serverSession, mutable); + } + } finally { + if (disconnectLocalSession && serverSession.isLocalSession()) { + LOG.trace("Disconnection local session {}", serverSession); + serverSession.disconnect(); + } } }