SpringBatch外部事物包裹问题

在springbatch的job注册配置里有个validateTransactionState的配置项,官方默认为true。校验job完成是否有事物包裹。

官方建议不要设置false,如果设置为true,如果启动时job外层包裹事物,则会报错误无法启动,设置为false可以启动。

以下是外部包裹事物,且设置校验参数为false 遇到的bug情况之一。(不听老人言吃亏在眼前)


在step中会执行chunk,每个chunk会通过semaphore共享锁来控制事物,采用同步来处理每个chunk


在chunk单个事物提交时会释放锁


这是正常流程。但是如果外部包裹了事物,会让第一个chunk完成事无法提交事物让锁无法释放,后续的chunk来了,就需要等待资源,导致job一直等待。导致外部事物整体无法提交。

所以最好还是挺官方的劝不要再job外部包裹事物。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容