[ https://issues.apache.org/jira/browse/CAMEL-4668?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13148505#comment-13148505 ]
Babak Vahdat edited comment on CAMEL-4668 at 11/11/11 2:38 PM: --------------------------------------------------------------- But if I start the route as the first step in the test method it *still* passes: {code} @Test public void testTXRollback() throws Exception { // start route context.startRoute("foo"); // first create three records template.sendBody("jpa://" + SendEmail.class.getName(), new SendEmail("f...@beer.org")); template.sendBody("jpa://" + SendEmail.class.getName(), new SendEmail("b...@beer.org")); template.sendBody("jpa://" + SendEmail.class.getName(), new SendEmail("kab...@beer.org")); // should rollback the entire MockEndpoint mock = getMockEndpoint("mock:result"); // we should retry and try again mock.expectedMinimumMessageCount(4); assertMockEndpointsSatisfied(); assertTrue("Should be >= 2, was: " + foo.intValue(), foo.intValue() >= 2); assertTrue("Should be >= 2, was: " + bar.intValue(), bar.intValue() >= 2); } {code} And what I've learned is that the call at the line: {code} template.sendBody("jpa://" + SendEmail.class.getName(), new SendEmail("kab...@beer.org")); {code} should at the latest by now blow up with a CamelExecutionException but still it doesn't! was (Author: bvahdat): But if I start the route as the first step in the test method it *still* passes: {code} @Test public void testTXRollback() throws Exception { // start route context.startRoute("foo"); // first create three records template.sendBody("jpa://" + SendEmail.class.getName(), new SendEmail("f...@beer.org")); template.sendBody("jpa://" + SendEmail.class.getName(), new SendEmail("b...@beer.org")); template.sendBody("jpa://" + SendEmail.class.getName(), new SendEmail("kab...@beer.org")); // should rollback the entire MockEndpoint mock = getMockEndpoint("mock:result"); // we should retry and try again mock.expectedMinimumMessageCount(4); assertMockEndpointsSatisfied(); assertTrue("Should be >= 2, was: " + foo.intValue(), foo.intValue() >= 2); assertTrue("Should be >= 2, was: " + bar.intValue(), bar.intValue() >= 2); } {code} And what I've learned is that the call at the line: {code} template.sendBody("jpa://" + SendEmail.class.getName(), new SendEmail("kab...@beer.org")); {code} should now blow up with a CamelExecutionException but still it doesn't! > JpaConsumer - Should rollback if processing of an exchange failed > ----------------------------------------------------------------- > > Key: CAMEL-4668 > URL: https://issues.apache.org/jira/browse/CAMEL-4668 > Project: Camel > Issue Type: Bug > Components: camel-jpa > Affects Versions: 2.7.4, 2.8.2 > Reporter: Claus Ibsen > Assignee: Claus Ibsen > Fix For: 2.7.5, 2.8.3, 2.9.0 > > > If a JPA consumer pickup X messages and then one of those messages fails to > be processed and throws an exception, then the JPA consumer should detect > this and mark the TX as rollback. > Currently there is a flaw which causes the JPA consumer to commit the batch. > See nabble > http://camel.465427.n5.nabble.com/Misleading-jmx-statistics-on-jpa-component-tp4960503p4960503.html -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira