gpt4 book ai didi

java - Spring Batch - 步骤不再执行 : Step already complete or not restartable

转载 作者:行者123 更新时间:2023-12-04 14:11:47 25 4
gpt4 key购买 nike

我有一个单步 springbatch 应用程序。工作如下:

@Bean
public Job databaseCursorJob(@Qualifier("databaseCursorStep") Step exampleJobStep,
JobBuilderFactory jobBuilderFactory) {
return jobBuilderFactory.get("databaseCursorJob")
.incrementer(new RunIdIncrementer())
.flow(exampleJobStep)
.end()
.build();
}
我从 springboot 应用程序开始工作。今天下午,我试图为这项工作添加第二步。大致如下:
@Bean
public Job databaseCursorJob(@Qualifier("databaseCursorStep") Step exampleJobStep,
JobBuilderFactory jobBuilderFactory) {
return jobBuilderFactory.get("databaseCursorJob")
.incrementer(new RunIdIncrementer())
.flow(exampleJobStep).next(partitionStep())
.end()
.build();
}
换句话说,只需添加“next(partitionStep())。但是,自从我这样做之后,作业完成而不执行任何步骤(请参阅下面的shell输出)。事实上,即使在删除第二步并返回到原来的工作,它拒绝执行这一步。在尝试添加第二步之前,我从未遇到过这个问题。我已经重新启动了我的VM,它仍然跳过了这一步。我在水中死了,直到我解决了这个问题。感谢任何见解。谢谢。
2020-09-01 14:49:00.260  INFO 6913 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8087 (http) with context path ''
2020-09-01 14:49:00.263 INFO 6913 --- [ main] f.p.r.Application : Started Application in 7.752 seconds (JVM running for 9.092)
2020-09-01 14:49:00.268 INFO 6913 --- [ main] o.s.b.a.b.JobLauncherCommandLineRunner : Running default command line with: []
2020-09-01 14:49:00.579 INFO 6913 --- [ main] o.s.b.c.l.support.SimpleJobLauncher : Job: [FlowJob: [name=databaseCursorJob]] launched with the following parameters: [{}]
2020-09-01 14:49:00.698 INFO 6913 --- [ main] o.s.batch.core.job.SimpleStepHandler : Step already complete or not restartable, so no action to execute: StepExecution: id=120, version=4, name=databaseCursorStep, status=COMPLETED, exitStatus=COMPLETED, readCount=1, filterCount=0, writeCount=1 readSkipCount=0, writeSkipCount=0, processSkipCount=0, commitCount=2, rollbackCount=0, exitDescription=
2020-09-01 14:49:00.730 INFO 6913 --- [ main] o.s.b.c.l.support.SimpleJobLauncher : Job: [FlowJob: [name=databaseCursorJob]] completed with the following parameters: [{}] and the following status: [COMPLETED]

最佳答案

我的问题是,如果出现错误或陷入未知状态,我的工作将无法恢复。该步骤不是“已经完成”,它从未完成。它的状态仍然是“STARTED”,退出代码是“UNKNOWN”,因为它从未退出。无论如何,我的作业存储库不在内存中,而是被捕获到本地数据库中,这就是为什么即使在重新启动 VM 后它也从未自行解决的原因(我很遗憾没有记住这一点)。因此,我能够通过清除作业实例历史记录来修复,但这只是创可贴。我仍然需要修复我的代码以防止它再次发生。
我还了解到我可以通过检查数据库中的作业存储库(全部都在那里)来进行诊断。
我真的解决了这个问题,感谢 Hassine 先生,他在上面多次回复并指出我正确的方向。他在第一次回复中提供的链接中确实提到了以后预防的解决方案:Spring Batch error (A Job Instance Already Exists) and RunIdIncrementer generates only once

关于java - Spring Batch - 步骤不再执行 : Step already complete or not restartable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63694023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com