RESOLVED - BATCH-996: use default retryLimit == 1 (not 0) in *StepFactoryBean

This commit is contained in:
robokaso
2009-01-14 13:53:20 +00:00
parent af0003d08b
commit e5391bf503
2 changed files with 11 additions and 8 deletions

View File

@@ -31,6 +31,7 @@ import org.springframework.batch.retry.policy.RecoveryCallbackRetryPolicy;
import org.springframework.batch.retry.policy.SimpleRetryPolicy;
import org.springframework.batch.retry.support.RetryTemplate;
import org.springframework.batch.support.SubclassExceptionClassifier;
import org.springframework.util.Assert;
/**
* Factory bean for step that provides options for configuring skip behavior.
@@ -63,7 +64,7 @@ public class SkipLimitStepFactoryBean extends SimpleStepFactoryBean {
private int cacheCapacity = 0;
private int retryLimit = 0;
private int retryLimit = 1;
private Class[] retryableExceptionClasses = new Class[] {};
@@ -86,11 +87,13 @@ public class SkipLimitStepFactoryBean extends SimpleStepFactoryBean {
/**
* Public setter for the retry limit. Each item can be retried up to this
* limit.
* limit. Note the limit includes the initial attempt, so it must be greater
* or equal to 1.
*
* @param retryLimit the retry limit to set
*/
public void setRetryLimit(int retryLimit) {
Assert.isTrue(retryLimit >= 1, "retry limit must be greater or equal to 1");
this.retryLimit = retryLimit;
}
@@ -199,7 +202,7 @@ public class SkipLimitStepFactoryBean extends SimpleStepFactoryBean {
protected void applyConfiguration(ItemOrientedStep step) {
super.applyConfiguration(step);
if (retryLimit > 0 || skipLimit > 0 || retryPolicy != null) {
if (retryLimit > 1 || skipLimit > 0 || retryPolicy != null) {
addFatalExceptionIfMissing(SkipLimitExceededException.class);
addFatalExceptionIfMissing(NonSkippableException.class);

View File

@@ -80,6 +80,7 @@ public class StatefulRetryStepFactoryBeanTests extends TestCase {
/*
* (non-Javadoc)
*
* @see junit.framework.TestCase#setUp()
*/
protected void setUp() throws Exception {
@@ -141,8 +142,8 @@ public class StatefulRetryStepFactoryBeanTests extends TestCase {
StepExecution stepExecution = new StepExecution(step.getName(), jobExecution);
try {
step.execute(stepExecution);
fail();
step.execute(stepExecution);
fail();
}
catch (NonSkippableException expected) {
assertEquals(0, stepExecution.getSkipCount());
@@ -152,7 +153,6 @@ public class StatefulRetryStepFactoryBeanTests extends TestCase {
assertEquals(1, stepExecution.getItemCount().intValue());
}
}
public void testSkipAndRetry() throws Exception {
@@ -268,7 +268,7 @@ public class StatefulRetryStepFactoryBeanTests extends TestCase {
}
public void testRetryWithSkipLimitBreach() throws Exception {
factory.setRetryLimit(0);
factory.setRetryLimit(1);
factory.setSkipLimit(2);
factory.setCommitInterval(3);
List items = TransactionAwareProxyFactory.createTransactionalList();
@@ -302,7 +302,7 @@ public class StatefulRetryStepFactoryBeanTests extends TestCase {
assertEquals(2, stepExecution.getSkipCount());
// One chunk read twice
assertEquals(6, count);
// Crapped out after two skips
// Crapped out after two skips
assertEquals(2, stepExecution.getItemCount().intValue());
}