【发布时间】:2019-04-24 12:56:35
【问题描述】:
我正在处理一个在使用默认 JdbcCursorItemReader 时遇到 DB2 死锁的 Spring Batch 应用程序。当批处理作业遇到错误时,我们设置了一个 SkipListener 来将“错误”状态写入相关行,这是发生死锁的时间。
我们发现通过使用默认的 JdbcPagingItemReader,我们能够避免死锁情况,尽管我们不确定为什么会出现这种情况。
我对 Spring Batch 的理解是,一旦从查询中读入 ResultSet,任何一个 Reader 都应该释放数据库上的锁,但 JdbcCursorItemReader 似乎没有发生这种情况。
谁能帮我理解为什么会这样?
谢谢!
【问题讨论】:
-
这可能与 DB2 的 JDBC 驱动有关(不是 Spring Batch 问题)。我邀请您阅读jira.spring.io/browse/BATCH-1273 中的 cmets(尽管它谈到了可能不是您的用例的 XA,但它仍然是相关的)。 “在某些平台上,光标只是一个坏主意。”正如 Dave Syer 所说。
标签: spring spring-batch db2-zos