diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/ItemOrientedStep.java b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/ItemOrientedStep.java index ee1d25fa3..0f5e7591c 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/ItemOrientedStep.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/ItemOrientedStep.java @@ -265,23 +265,18 @@ public class ItemOrientedStep extends AbstractStep { throw new FatalException("Fatal error detected during save of step execution context", e); } - itemHandler.mark(); - try { + itemHandler.mark(); transactionManager.commit(transaction); } catch (Exception e) { + fatalException.setException(e); + stepExecution.setStatus(BatchStatus.UNKNOWN); logger.error("Fatal error detected during commit."); - throw new CommitException("Fatal error detected during commit - " - + "the execution is in undefined state and restart will not be possible", e); + throw new FatalException("Fatal error detected during commit", e); } } - catch (CommitException e) { - // trying to rollback after failed commit would just be - // asking for more trouble - die ASAP - throw e; - } catch (Error e) { processRollback(stepExecution, contribution, fatalException, transaction); throw e; @@ -387,15 +382,6 @@ public class ItemOrientedStep extends AbstractStep { } - /** - * Encapsulates exception thrown while committing transaction. - */ - private static class CommitException extends FatalException { - public CommitException(String msg, Throwable cause) { - super(msg, cause); - } - } - protected void close(ExecutionContext ctx) throws Exception { stream.close(ctx); } diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/ItemOrientedStepTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/ItemOrientedStepTests.java index 667ff3566..e48e7dc67 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/ItemOrientedStepTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/ItemOrientedStepTests.java @@ -654,9 +654,9 @@ public class ItemOrientedStepTests extends TestCase { catch (RuntimeException ex) { assertEquals(BatchStatus.UNKNOWN, stepExecution.getStatus()); String msg = stepExecution.getExitStatus().getExitDescription(); - assertTrue(msg.contains("Fatal error detected during commit - the execution is in undefined state and restart will not be possible")); + assertTrue(msg.contains("Fatal error detected during commit")); msg = ex.getMessage(); - assertTrue(msg.contains("Fatal error detected during commit - the execution is in undefined state and restart will not be possible")); + assertTrue(msg.contains("Fatal error detected during commit")); // The original rollback was caused by this one: assertEquals("Bar", ex.getCause().getMessage()); }