@Override public RemoteChunkingMasterStepBuilder<I, O> skipLimit(int skipLimit) { super.skipLimit(skipLimit); return this; }
faultTolerantBuilder.skipLimit(skipLimit); for (Class<? extends Throwable> type : skippableExceptionClasses.keySet()) { if (skippableExceptionClasses.get(type)) {
@Bean public Step step1(StepBuilderFactory stepBuilderFactory, ItemReader<String> fakeItemReader, ItemProcessor<String, String> fakeProcessor, ItemWriter<String> fakeItemWriter, ItemProcessListener<String, String> itemProcessListener) { return stepBuilderFactory.get("testStep").<String, String>chunk(10) .reader(fakeItemReader) .processor(fakeProcessor) .writer(fakeItemWriter) .listener(itemProcessListener) .faultTolerant().skipLimit(50).skip(RuntimeException.class) .build(); }
builder.skipLimit(skipLimit); for (Class<? extends Throwable> type : skippableExceptionClasses.keySet()) { if (skippableExceptionClasses.get(type)) {
@Override @Bean public Step step(){ return stepBuilders.get("step") .listener(listener()) .<String,String>chunk(2) .reader(reader()) .writer(writer()) .faultTolerant() .skipLimit(1) .skip(MySkippableException.class) // ChunkListener registered twice for checking BATCH-2149 .listener((ChunkListener) listener()) .build(); } }
.faultTolerant() .skip(Exception.class) .skipLimit(3) .build();
@Test public void testSkipReadError() throws Exception{ reader.failCount = 10; Step step = builder.faultTolerant().skip(RuntimeException.class).skipLimit(20).chunk(25).reader(reader).processor(processor).writer(writer).listener((ItemReadListener<String>) listener).build(); runStep(step); assertNotNull(stepExecution); assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); assertEquals(25, processor.count); assertEquals(25, writer.results.size()); assertEquals(0, stepExecution.getProcessSkipCount()); assertEquals(25, stepExecution.getReadCount()); assertEquals(1, stepExecution.getReadSkipCount()); assertEquals(1, stepExecution.getSkipCount()); assertEquals(25, stepExecution.getWriteCount()); assertEquals(0, stepExecution.getFilterCount()); assertEquals(0, stepExecution.getWriteSkipCount()); assertEquals(0, stepExecution.getFailureExceptions().size()); assertEquals(25, listener.afterProcess); assertEquals(25, listener.afterRead); assertEquals(1, listener.afterWrite); assertEquals(25, listener.beforeProcess); assertEquals(27, listener.beforeRead); assertEquals(1, listener.beforeWriteCount); assertEquals(0, listener.onProcessError); assertEquals(1, listener.onReadError); assertEquals(0, listener.onWriteError); }
@Test public void testSkipProcessError() throws Exception{ processor.failCount = 10; Step step = builder.faultTolerant().skip(RuntimeException.class).skipLimit(20).chunk(25).reader(reader).processor(processor).writer(writer).listener((ItemReadListener<String>) listener).build(); runStep(step); assertNotNull(stepExecution); assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); assertEquals(25, processor.count); assertEquals(24, writer.results.size()); assertEquals(1, stepExecution.getProcessSkipCount()); assertEquals(25, stepExecution.getReadCount()); assertEquals(0, stepExecution.getReadSkipCount()); assertEquals(1, stepExecution.getSkipCount()); assertEquals(24, stepExecution.getWriteCount()); assertEquals(1, stepExecution.getFilterCount()); assertEquals(0, stepExecution.getWriteSkipCount()); assertEquals(0, stepExecution.getFailureExceptions().size()); assertEquals(24, listener.afterProcess); assertEquals(25, listener.afterRead); assertEquals(1, listener.afterWrite); assertEquals(25, listener.beforeProcess); assertEquals(26, listener.beforeRead); assertEquals(1, listener.beforeWriteCount); assertEquals(1, listener.onProcessError); assertEquals(0, listener.onReadError); assertEquals(0, listener.onWriteError); }
@Test public void testSkipWriteError() throws Exception{ writer.fail = true; Step step = builder.faultTolerant().skip(RuntimeException.class).skipLimit(25).chunk(7).reader(reader).processor(processor).writer(writer).listener((ItemReadListener<String>) listener).build(); runStep(step); assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); assertEquals(25, processor.count); assertEquals(18, writer.results.size()); assertEquals(0, stepExecution.getProcessSkipCount()); assertEquals(25, stepExecution.getReadCount()); assertEquals(0, stepExecution.getReadSkipCount()); assertEquals(1, stepExecution.getSkipCount()); assertEquals(18, stepExecution.getWriteCount()); assertEquals(0, stepExecution.getFilterCount()); assertEquals(1, stepExecution.getWriteSkipCount()); assertEquals(25, listener.afterProcess); assertEquals(25, listener.afterRead); assertEquals(3, listener.afterWrite); assertEquals(25, listener.beforeProcess); assertEquals(26, listener.beforeRead); assertEquals(4, listener.beforeWriteCount); assertEquals(0, listener.onProcessError); assertEquals(0, listener.onReadError); assertEquals(1, listener.onWriteError); assertEquals(0, listener.onSkipInRead); assertEquals(0, listener.onSkipInProcess); assertEquals(1, listener.onSkipInWrite); }
@Bean public Step step(){ return customStepBuilders().get("step") .faultTolerant() .skipLimit(10) .skip(UnknownGenderException.class) .listener(logSkipListener()) .build(); }
@Bean public Step step1() { return stepBuilderFactory.get("step") .<String, String>chunk(10) .reader(reader()) .processor(processor(null)) .writer(writer(null)) .faultTolerant() .skip(CustomRetryableException.class) .skipLimit(15) .build(); }
@Bean public Step step1() { return stepBuilderFactory.get("step") .<String, String>chunk(10) .reader(reader()) .processor(processor()) .writer(writer()) .faultTolerant() .skip(CustomException.class) .skipLimit(15) .listener(new CustomSkipListener()) .build(); }
@Bean public Step notifySubscribersStep(){ return stepBuilders.get("notifySubscribersStep") .<User,User>chunk(1) //important to be one in this case to commit after every line read .reader(notifySubscribersReader()) .processor(notifySubscribersProcessor()) .writer(notifySubscribersWriter()) .listener(logProcessListener()) .faultTolerant() .skipLimit(10) //default is set to 0 .skip(MySQLIntegrityConstraintViolationException.class) .build(); }
@Bean public Step step(){ return stepBuilderFactory.get("step") .<SuggestedPodcast,SuggestedPodcast>chunk(1) //important to be one in this case to commit after every line read .reader(reader(OVERRIDEN_BY_EXPRESSION_VALUE)) .processor(processor()) .writer(writer()) .listener(logProcessListener()) .faultTolerant() .skipLimit(10) //default is set to 0 .skip(Exception.class) .build(); }
@Bean public Step step(){ return stepBuilders.get("step") .<Partner,Partner>chunk(1) .reader(reader()) .processor(processor()) .writer(writer()) .listener(logProcessListener()) .faultTolerant() .skipLimit(10) .skip(UnknownGenderException.class) .listener(logSkipListener()) .build(); }
faultTolerantBuilder.skipLimit(skipLimit); for (Class<? extends Throwable> type : skippableExceptionClasses.keySet()) { if (skippableExceptionClasses.get(type)) {
faultTolerantBuilder.skipLimit(skipLimit); for (Class<? extends Throwable> type : skippableExceptionClasses.keySet()) { if (skippableExceptionClasses.get(type)) {
faultTolerantBuilder.skipLimit(skipLimit); for (Class<? extends Throwable> type : skippableExceptionClasses.keySet()) { if (skippableExceptionClasses.get(type)) {
builder.skipLimit(skipLimit); for (Class<? extends Throwable> type : skippableExceptionClasses.keySet()) { if (skippableExceptionClasses.get(type)) {
builder.skipLimit(skipLimit); for (Class<? extends Throwable> type : skippableExceptionClasses.keySet()) { if (skippableExceptionClasses.get(type)) {