Spring Batch给出所有要写入的字节未成功写入错误

时间:2019-02-20 01:52:55

标签: java spring spring-batch batch-processing

我编写了一个春季批处理作业,该作业使用flatFileItemWriter将大量数据写入文件。作业间歇性失败,并显示以下错误org.springframework.batch.support.transaction.FlushFailedException: Could not write to output buffer。 我查看了源代码,发现它确实在 this place,这意味着bytesWritten不等于它读取的字节。这里有谁知道为什么这步失败了。谢谢。

这是错误的完整堆栈跟踪:

Encountered an error executing step step in job exportDataJob; org.springframework.batch.support.transaction.FlushFailedException: Could not write to output buffer 
   at org.springframework.batch.support.transaction.TransactionAwareBufferedWriter$1.beforeCommit(TransactionAwareBufferedWriter.java:111)
   at org.springframework.transaction.support.TransactionSynchronizationUtils.triggerBeforeCommit(TransactionSynchronizationUtils.java:95)
   at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCommit(AbstractPlatformTransactionManager.java:932)
   at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:744)
   at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:730)
   at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:150) 
   at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:271) 
   at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:81) 
   at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:374) 
   at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:215) 
   at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:144) 
   at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:257) 
   at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:200) 
   at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:148) 
   at org.springframework.batch.core.job.AbstractJob.handleStep(AbstractJob.java:392) 
   at org.springframework.batch.core.job.SimpleJob.doExecute(SimpleJob.java:135) 
   at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:306) 
   at org.springframework.batch.core.launch.support.SimpleJobLauncher$1.run(SimpleJobLauncher.java:135) 
   at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50) 
   at org.springframework.batch.core.launch.support.SimpleJobLauncher.run(SimpleJobLauncher.java:128) 
   at org.springframework.boot.autoconfigure.batch.JobLauncherCommandLineRunner.execute(JobLauncherCommandLineRunner.java:214) 
   at org.springframework.boot.autoconfigure.batch.JobLauncherCommandLineRunner.executeLocalJobs(JobLauncherCommandLineRunner.java:231) 
   at org.springframework.boot.autoconfigure.batch.JobLauncherCommandLineRunner.launchJobFromProperties(JobLauncherCommandLineRunner.java:123) 
   at org.springframework.boot.autoconfigure.batch.JobLauncherCommandLineRunner.run(JobLauncherCommandLineRunner.java:117) 
   at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:732) 
   at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:716) 
   at org.springframework.boot.SpringApplication.afterRefresh(SpringApplication.java:703) 
   at org.springframework.boot.SpringApplication.run(SpringApplication.java:304) 
   at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) 
   at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) 
   at com.intuit.sbg.integrations.batch.Application.main(Application.java:48) 
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
   at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) 
   at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) 
   at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:587) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
   at java.lang.reflect.Method.invoke(Method.java:498) 
   at org.tanukisoftware.wrapper.WrapperJarApp.run(WrapperJarApp.java:394) 
   at java.lang.Thread.run(Thread.java:748) 
Caused by: java.io.IOException: All bytes to be written were not successfully written 
   at org.springframework.batch.support.transaction.TransactionAwareBufferedWriter$1.complete(TransactionAwareBufferedWriter.java:124) 
   at org.springframework.batch.support.transaction.TransactionAwareBufferedWriter$1.beforeCommit(TransactionAwareBufferedWriter.java:107) 
   ... 44 common frames omitted

0 个答案:

没有答案