Return-Path: Delivered-To: apmail-camel-dev-archive@www.apache.org Received: (qmail 50997 invoked from network); 10 Jul 2010 14:35:48 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 10 Jul 2010 14:35:48 -0000 Received: (qmail 67475 invoked by uid 500); 10 Jul 2010 14:35:48 -0000 Delivered-To: apmail-camel-dev-archive@camel.apache.org Received: (qmail 67383 invoked by uid 500); 10 Jul 2010 14:35:48 -0000 Mailing-List: contact dev-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 dev@camel.apache.org Received: (qmail 67375 invoked by uid 500); 10 Jul 2010 14:35:48 -0000 Delivered-To: apmail-activemq-camel-dev@activemq.apache.org Received: (qmail 67372 invoked by uid 99); 10 Jul 2010 14:35:48 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 10 Jul 2010 14:35:48 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.22] (HELO thor.apache.org) (140.211.11.22) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 10 Jul 2010 14:35:45 +0000 Received: from thor (localhost [127.0.0.1]) by thor.apache.org (8.13.8+Sun/8.13.8) with ESMTP id o6AERsAc015338 for ; Sat, 10 Jul 2010 14:27:54 GMT Message-ID: <13814461.38511278772074183.JavaMail.jira@thor> Date: Sat, 10 Jul 2010 10:27:54 -0400 (EDT) From: "Claus Ibsen (JIRA)" To: camel-dev@activemq.apache.org Subject: [jira] Issue Comment Edited: (CAMEL-2935) Broken failure reporting via DefaultProucerTemplate.asyncCallback and Synchronization.onFailure In-Reply-To: <11958053.38251278756171780.JavaMail.jira@thor> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: ae95407df07c98740808b2ef9da0087c X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/activemq/browse/CAMEL-2935?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=60579#action_60579 ] Claus Ibsen edited comment on CAMEL-2935 at 7/10/10 10:27 AM: -------------------------------------------------------------- I have to fix some unit tests which was relying on the old behavior of {{template.send(Exchange)}} and {{template.request(Exchange)}} not throwing an exception, which wasn't entirely covered by the first fix. Now with all the template methods fixed they surface some tests which now fails due to the tighten contract. was (Author: davsclaus): I have to fix some unit tests which was relying on the old behavior of {{template.send(Exchange)}} and {{template.request(Exchange)}} not throwing an exception. > Broken failure reporting via DefaultProucerTemplate.asyncCallback and Synchronization.onFailure > ----------------------------------------------------------------------------------------------- > > Key: CAMEL-2935 > URL: https://issues.apache.org/activemq/browse/CAMEL-2935 > Project: Apache Camel > Issue Type: Bug > Components: camel-core > Affects Versions: 2.3.0 > Reporter: Martin Krasser > Fix For: 2.4.0 > > Attachments: on-failure.patch > > > The recent change in {{ProducerCache.send}} > {code:java|title=ProducerCache.java} > public void send(Endpoint endpoint, Exchange exchange) { > try { > sendExchange(endpoint, null, null, exchange); > // RECENT CHANGE HERE: > // ensure that CamelExecutionException is always thrown > if (exchange.getException() != null) { > exchange.setException(wrapCamelExecutionException(exchange, exchange.getException())); > } > } catch (Exception e) { > throw wrapCamelExecutionException(exchange, e); > } > } > {code} > that throws a {{CamelExecutionException}} if {{exchange.getException}} is not null, makes it impossible for {{DefaultProducerTemplate.asyncCallback}} to report failures (other than fault messages) asynchronously via {{Synchronization.onFailure}} > {code:java|title=DefaultProducerTemplate.java} > public Future asyncCallback(final Endpoint endpoint, final Exchange exchange, final Synchronization onCompletion) { > Callable task = new Callable() { > public Exchange call() throws Exception { > // FIXME: exception is thrown in Camel 2.4 where a normal return with answer.getException != null was done in Camel 2.3 > Exchange answer = send(endpoint, exchange); > if (answer.isFailed()) { > onCompletion.onFailure(answer); > } else { > // ... > } > return answer; > } > }; > // ... > } > {code} > This was working in Camel 2.3 (but unfortunately there wasn't any test case for it). I attached a patch for {{DefaultProducerTemplateAsyncTest}} that demonstrates the problem. I didn't commit a fix yet because I'm unsure at the moment about the best way to fix that. Of course I tried a naive fix in the DefaultProducerTemplate.asyncCallback methods which causes the test (in the patch) to pass but I'd like to hear other opinions before I continue. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.