我有一个具有以下属性的spring批处理作业:
commit-interval: 25.
skip-limit of 3.
在我的集成测试中,我注入了一个假的编写器,它将抛出可跳过的异常,然后注入一个id列表,这将导致异常被抛出。
在我的测试之前,我创建了135行。我配置了那些行
"9", "11", "44", "51", "70"
将是导致ItemWriter抛出异常的行。
在第一次运行时一切运行良好,正如预期的那样,作业在第51行的50次提交之后失败,或者更确切地说当作者中的“某事”检测到现在已超出限制的可跳过的异常时另外,我断言9,11和44是在我可以预期的可跳过的听众中注册的。
我意识到批处理作业在事务失败之前没有单独包装事务,比如id为9,11和44,因为它已经知道跳过限制了。
但是,当我重新启动作业时,起始行是74 - 不是51,正如我所料。
因此从51到73被跳过?
我无法想出这个。或者为什么它会跳过完全失败的块。
任何帮助都将不胜感激。
大卫。