Updated Branches: refs/heads/camel-2.11.x 7f149a59b -> f0fbe0723 refs/heads/master 2f4e3aeaf -> 0d9ee411d
CAMEL-5376: mail consumer commit/rollback logc do not allow handover to ensure running on same thread as polling to use the same mail session. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/0d9ee411 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/0d9ee411 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/0d9ee411 Branch: refs/heads/master Commit: 0d9ee411dfe8b352b9927a89e8e768287e712249 Parents: 2f4e3ae Author: Claus Ibsen <davscl...@apache.org> Authored: Mon Aug 26 20:01:38 2013 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Mon Aug 26 20:01:38 2013 +0200 ---------------------------------------------------------------------- .../org/apache/camel/component/mail/MailConsumer.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/0d9ee411/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java ---------------------------------------------------------------------- diff --git a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java index 6845611..dfcec4c 100644 --- a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java +++ b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java @@ -32,6 +32,7 @@ import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.impl.ScheduledBatchPollingConsumer; import org.apache.camel.spi.Synchronization; +import org.apache.camel.support.SynchronizationAdapter; import org.apache.camel.util.CastUtils; import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; @@ -180,7 +181,7 @@ public class MailConsumer extends ScheduledBatchPollingConsumer { final Message mail = exchange.getIn(MailMessage.class).getOriginalMessage(); // add on completion to handle after work when the exchange is done - exchange.addOnCompletion(new Synchronization() { + exchange.addOnCompletion(new SynchronizationAdapter() { public void onComplete(Exchange exchange) { processCommit(mail, exchange); } @@ -190,6 +191,13 @@ public class MailConsumer extends ScheduledBatchPollingConsumer { } @Override + public boolean allowHandover() { + // do not allow handover as the commit/rollback logic needs to be executed + // on the same session that polled the messages + return false; + } + + @Override public String toString() { return "MailConsumerOnCompletion"; }