org.springframework.batch.core.step.skip.SkipLimitExceededException

There are no available Samebug tips for this exception. Do you have an idea how to solve this issue? A short tip would help users who saw this issue last week.

  • If an inbound csv file contains an unrecognized column name in its header row, the validation step logs a warning. E.g. {noformat} 15:35:38.520 [taskExecutor-1] WARN o.j.s.u.i.j.v.m.m.v.DatabaseConstraintMapValidator - Skipped validation because no metadata could be found for column 'ColumnReference[tableName=external_faculty_course_roster,columnName=stdnt_enrl_status]'. {noformat} That's fine, and makes sense. But later on, when we go to insert records into the staging tables, these rogue columns result in NPEs which effectively abort the entire file b/c no rows are successfully imported: {noformat} 15:35:54.317 [taskExecutor-1] INFO o.j.s.u.i.j.s.SqlServerExternalTableUpsertWriter - ******UPSERT****** batch start:500 batchstop:550 15:35:54.348 [taskExecutor-1] ERROR o.s.batch.core.step.AbstractStep - Encountered an error executing the step org.springframework.batch.core.step.skip.SkipLimitExceededException: Skip limit of '10' exceeded at org.springframework.batch.core.step.skip.LimitCheckingItemSkipPolicy.shouldSkip(LimitCheckingItemSkipPolicy.java:133) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.skip.ExceptionClassifierSkipPolicy.shouldSkip(ExceptionClassifierSkipPolicy.java:70) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor.shouldSkip(FaultTolerantChunkProcessor.java:498) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor.checkSkipPolicy(FaultTolerantChunkProcessor.java:529) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor.scan(FaultTolerantChunkProcessor.java:595) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor.access$900(FaultTolerantChunkProcessor.java:50) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor$5.recover(FaultTolerantChunkProcessor.java:413) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.retry.support.RetryTemplate.handleRetryExhausted(RetryTemplate.java:435) ~[spring-retry-1.0.2.RELEASE.jar:na] at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:304) ~[spring-retry-1.0.2.RELEASE.jar:na] at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:188) ~[spring-retry-1.0.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.BatchRetryTemplate.execute(BatchRetryTemplate.java:217) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor.write(FaultTolerantChunkProcessor.java:423) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.SimpleChunkProcessor.process(SimpleChunkProcessor.java:199) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.ChunkOrientedTasklet.execute(ChunkOrientedTasklet.java:75) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:395) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130) ~[spring-tx-3.2.0.RELEASE.jar:3.2.0.RELEASE] at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:267) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:77) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:368) ~[spring-batch-infrastructure-2.2.2.RELEASE.jar:na] at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:215) ~[spring-batch-infrastructure-2.2.2.RELEASE.jar:na] at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:144) ~[spring-batch-infrastructure-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:253) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:195) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.partition.support.TaskExecutorPartitionHandler$1.call(TaskExecutorPartitionHandler.java:139) [spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.partition.support.TaskExecutorPartitionHandler$1.call(TaskExecutorPartitionHandler.java:136) [spring-batch-core-2.2.2.RELEASE.jar:na] at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) [na:1.6.0_31] at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.6.0_31] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) [na:1.6.0_31] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.6.0_31] at java.lang.Thread.run(Unknown Source) [na:1.6.0_31] Caused by: java.lang.NullPointerException: null at org.jasig.ssp.util.importer.job.staging.SqlServerStagingTableWriter$1.doInPreparedStatement(SqlServerStagingTableWriter.java:131) ~[ssp-data-importer-impl-1.0.0.jar:1.0.0] at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:589) ~[spring-jdbc-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:617) ~[spring-jdbc-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.jasig.ssp.util.importer.job.staging.SqlServerStagingTableWriter.write(SqlServerStagingTableWriter.java:119) ~[ssp-data-importer-impl-1.0.0.jar:1.0.0] at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) ~[na:na] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.6.0_31] at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.6.0_31] at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:132) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:120) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at $Proxy0.write(Unknown Source) ~[na:na] at org.springframework.batch.item.support.CompositeItemWriter.write(CompositeItemWriter.java:51) ~[spring-batch-infrastructure-2.2.2.RELEASE.jar:na] at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) ~[na:na] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.6.0_31] at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.6.0_31] at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:132) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:120) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at $Proxy8.write(Unknown Source) ~[na:na] at org.springframework.batch.core.step.item.SimpleChunkProcessor.writeItems(SimpleChunkProcessor.java:175) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor.scan(FaultTolerantChunkProcessor.java:580) ~[spring-batch-core-2.2.2.RELEASE.jar:na] ... 25 common frames omitted {noformat} This exception does appear in the logs (obviously), but there is no corresponding explanation in the report. Just a mysterious record count set: {noformat} Table Name: external_faculty_course_roster Parsed: 1843 Skipped on Parse: 1 Upserted: 0 Skipped on Write: 10 {noformat} Think we need to decide whether we consider a rogue column to be a row-fatal problem or not. If it is, we should just treat it like any other validation failure rather than letting it slide by. If it's not, we should either remove the rogue column from the output of the validation step or else implement some defensive code in the staging table writing components. We don't really have a notion of "soft failures" currently, or at least not that we represent in reports. So I think for this particular case we should probably start by considering a rogue column to be a row-fatal validation failure and handle it the same way we do any other such failure.
    via by Dan McCallum,
  • If an inbound csv file contains an unrecognized column name in its header row, the validation step logs a warning. E.g. {noformat} 15:35:38.520 [taskExecutor-1] WARN o.j.s.u.i.j.v.m.m.v.DatabaseConstraintMapValidator - Skipped validation because no metadata could be found for column 'ColumnReference[tableName=external_faculty_course_roster,columnName=stdnt_enrl_status]'. {noformat} That's fine, and makes sense. But later on, when we go to insert records into the staging tables, these rogue columns result in NPEs which effectively abort the entire file b/c no rows are successfully imported: {noformat} 15:35:54.317 [taskExecutor-1] INFO o.j.s.u.i.j.s.SqlServerExternalTableUpsertWriter - ******UPSERT****** batch start:500 batchstop:550 15:35:54.348 [taskExecutor-1] ERROR o.s.batch.core.step.AbstractStep - Encountered an error executing the step org.springframework.batch.core.step.skip.SkipLimitExceededException: Skip limit of '10' exceeded at org.springframework.batch.core.step.skip.LimitCheckingItemSkipPolicy.shouldSkip(LimitCheckingItemSkipPolicy.java:133) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.skip.ExceptionClassifierSkipPolicy.shouldSkip(ExceptionClassifierSkipPolicy.java:70) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor.shouldSkip(FaultTolerantChunkProcessor.java:498) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor.checkSkipPolicy(FaultTolerantChunkProcessor.java:529) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor.scan(FaultTolerantChunkProcessor.java:595) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor.access$900(FaultTolerantChunkProcessor.java:50) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor$5.recover(FaultTolerantChunkProcessor.java:413) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.retry.support.RetryTemplate.handleRetryExhausted(RetryTemplate.java:435) ~[spring-retry-1.0.2.RELEASE.jar:na] at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:304) ~[spring-retry-1.0.2.RELEASE.jar:na] at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:188) ~[spring-retry-1.0.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.BatchRetryTemplate.execute(BatchRetryTemplate.java:217) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor.write(FaultTolerantChunkProcessor.java:423) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.SimpleChunkProcessor.process(SimpleChunkProcessor.java:199) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.ChunkOrientedTasklet.execute(ChunkOrientedTasklet.java:75) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:395) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130) ~[spring-tx-3.2.0.RELEASE.jar:3.2.0.RELEASE] at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:267) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:77) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:368) ~[spring-batch-infrastructure-2.2.2.RELEASE.jar:na] at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:215) ~[spring-batch-infrastructure-2.2.2.RELEASE.jar:na] at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:144) ~[spring-batch-infrastructure-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:253) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:195) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.partition.support.TaskExecutorPartitionHandler$1.call(TaskExecutorPartitionHandler.java:139) [spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.partition.support.TaskExecutorPartitionHandler$1.call(TaskExecutorPartitionHandler.java:136) [spring-batch-core-2.2.2.RELEASE.jar:na] at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) [na:1.6.0_31] at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.6.0_31] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) [na:1.6.0_31] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.6.0_31] at java.lang.Thread.run(Unknown Source) [na:1.6.0_31] Caused by: java.lang.NullPointerException: null at org.jasig.ssp.util.importer.job.staging.SqlServerStagingTableWriter$1.doInPreparedStatement(SqlServerStagingTableWriter.java:131) ~[ssp-data-importer-impl-1.0.0.jar:1.0.0] at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:589) ~[spring-jdbc-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:617) ~[spring-jdbc-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.jasig.ssp.util.importer.job.staging.SqlServerStagingTableWriter.write(SqlServerStagingTableWriter.java:119) ~[ssp-data-importer-impl-1.0.0.jar:1.0.0] at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) ~[na:na] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.6.0_31] at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.6.0_31] at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:132) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:120) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at $Proxy0.write(Unknown Source) ~[na:na] at org.springframework.batch.item.support.CompositeItemWriter.write(CompositeItemWriter.java:51) ~[spring-batch-infrastructure-2.2.2.RELEASE.jar:na] at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) ~[na:na] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.6.0_31] at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.6.0_31] at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:132) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:120) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at $Proxy8.write(Unknown Source) ~[na:na] at org.springframework.batch.core.step.item.SimpleChunkProcessor.writeItems(SimpleChunkProcessor.java:175) ~[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor.scan(FaultTolerantChunkProcessor.java:580) ~[spring-batch-core-2.2.2.RELEASE.jar:na] ... 25 common frames omitted {noformat} This exception does appear in the logs (obviously), but there is no corresponding explanation in the report. Just a mysterious record count set: {noformat} Table Name: external_faculty_course_roster Parsed: 1843 Skipped on Parse: 1 Upserted: 0 Skipped on Write: 10 {noformat} Think we need to decide whether we consider a rogue column to be a row-fatal problem or not. If it is, we should just treat it like any other validation failure rather than letting it slide by. If it's not, we should either remove the rogue column from the output of the validation step or else implement some defensive code in the staging table writing components. We don't really have a notion of "soft failures" currently, or at least not that we represent in reports. So I think for this particular case we should probably start by considering a rogue column to be a row-fatal validation failure and handle it the same way we do any other such failure.
    via by Dan McCallum,
    • org.springframework.batch.core.step.skip.SkipLimitExceededException: Skip limit of '10' exceeded at org.springframework.batch.core.step.skip.LimitCheckingItemSkipPolicy.shouldSkip(LimitCheckingItemSkipPolicy.java:133)[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.skip.ExceptionClassifierSkipPolicy.shouldSkip(ExceptionClassifierSkipPolicy.java:70)[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor.shouldSkip(FaultTolerantChunkProcessor.java:498)[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor.checkSkipPolicy(FaultTolerantChunkProcessor.java:529)[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor.scan(FaultTolerantChunkProcessor.java:595)[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor.access$900(FaultTolerantChunkProcessor.java:50)[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor$5.recover(FaultTolerantChunkProcessor.java:413)[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.retry.support.RetryTemplate.handleRetryExhausted(RetryTemplate.java:435)[spring-retry-1.0.2.RELEASE.jar:na] at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:304)[spring-retry-1.0.2.RELEASE.jar:na] at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:188)[spring-retry-1.0.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.BatchRetryTemplate.execute(BatchRetryTemplate.java:217)[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor.write(FaultTolerantChunkProcessor.java:423)[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.SimpleChunkProcessor.process(SimpleChunkProcessor.java:199)[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.ChunkOrientedTasklet.execute(ChunkOrientedTasklet.java:75)[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:395)[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130)[spring-tx-3.2.0.RELEASE.jar:3.2.0.RELEASE] at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:267)[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:77)[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:368)[spring-batch-infrastructure-2.2.2.RELEASE.jar:na] at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:215)[spring-batch-infrastructure-2.2.2.RELEASE.jar:na] at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:144)[spring-batch-infrastructure-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:253)[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:195)[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.partition.support.TaskExecutorPartitionHandler$1.call(TaskExecutorPartitionHandler.java:139)[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.partition.support.TaskExecutorPartitionHandler$1.call(TaskExecutorPartitionHandler.java:136)[spring-batch-core-2.2.2.RELEASE.jar:na] at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)[na:1.6.0_31] at java.util.concurrent.FutureTask.run(Unknown Source)[na:1.6.0_31] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)[na:1.6.0_31] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)[na:1.6.0_31] at java.lang.Thread.run(Unknown Source)[na:1.6.0_31] Caused by: java.lang.NullPointerException: null at org.jasig.ssp.util.importer.job.staging.SqlServerStagingTableWriter$1.doInPreparedStatement(SqlServerStagingTableWriter.java:131)[ssp-data-importer-impl-1.0.0.jar:1.0.0] at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:589)[spring-jdbc-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:617)[spring-jdbc-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.jasig.ssp.util.importer.job.staging.SqlServerStagingTableWriter.write(SqlServerStagingTableWriter.java:119)[ssp-data-importer-impl-1.0.0.jar:1.0.0] at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)[na:na] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)[na:1.6.0_31] at java.lang.reflect.Method.invoke(Unknown Source)[na:1.6.0_31] at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:132)[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:120)[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at $Proxy0.write(Unknown Source)[na:na] at org.springframework.batch.item.support.CompositeItemWriter.write(CompositeItemWriter.java:51)[spring-batch-infrastructure-2.2.2.RELEASE.jar:na] at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)[na:na] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)[na:1.6.0_31] at java.lang.reflect.Method.invoke(Unknown Source)[na:1.6.0_31] at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:132)[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:120)[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE] at $Proxy8.write(Unknown Source)[na:na] at org.springframework.batch.core.step.item.SimpleChunkProcessor.writeItems(SimpleChunkProcessor.java:175)[spring-batch-core-2.2.2.RELEASE.jar:na] at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor.scan(FaultTolerantChunkProcessor.java:580)[spring-batch-core-2.2.2.RELEASE.jar:na] ... 25 more
    No Bugmate found.