34 Batch chunk、checkpoint 与重启:实验合同(NOT_RUN) 门槛:OpenJDK 21、Maven Wrapper 3.9.9、独立 PostgreSQL 16.15 / pgJDBC 42.7.7、Open Liberty 26.0.0.5 和 Jakarta Batch 2.1;需新增版本化的 job XML、启动入口、不可变输入文件、数据库导入/拒绝表和可观测 job repository,验证实现支持 checkpoint/restart 的实际配置。不要调用现有采购 HTTP 脚本冒充 batch。 当前可以执行的编译命令: cd examples/javaee-enterprise ../hibernate-lab/mvnw -B -ntp -f "$PWD/pom.xml" clean verify 这不包含 batch 作业;要运行需按 examples/javaee-enterprise/README.md 部署隔离服务器。 预制合成文件 55 条解析后的数据记录(表头/空行不计入),固定 CSV 方言、SHA-256 和 file_id;52 条互不重复且有效、2 条独立错误、1 条与有效行重复;导入前固定现有数据快照。chunk item-count=20,非法行 skip 上限=2,retry 上限明确写入作业定义。需实现并核验跳过时的持久拒绝账本;单靠 skip-limit 不会自动保存错误原因。合法重复行要单独分类,不占用非法行 skip 预算。唯一键 (file_id,line_no) 负责同一记录重放;业务重复另有 (supplier_id,sku,import_version) 规则,两种唯一性不可混为一谈。 建议验收命令(下列文件/脚本尚不存在,先实现并核对命令): sha256sum scenarios/fixtures/34-suppliers.csv bash scenarios/34-import.sh normal bash scenarios/34-import.sh crash-after-second-checkpoint bash scenarios/34-import.sh restart-same-execution normal:状态 COMPLETED;52 个新有效业务行、2 个带原因码的拒绝、1 个被识别的业务重复;输入总数 55,未处理 0。分别查询成功/拒绝/重复行键集合及现存目录初态,不依赖任务日志推断计数;若 skip 了非法行却没有拒绝账本,不算通过。 crash:在第二 chunk 提交后的显式屏障杀服务器,记录 execution ID、checkpoint、已提交行与状态;若实际断点不同,不报第二 chunk 通过。 restart:使用相同摘要文件、作业实例和允许的 restart 参数;最终新有效 52、拒绝 2、重复 1,没有重复插入,状态 COMPLETED;更改输入摘要必须拒绝旧 checkpoint。 保存 SHA、job XML、仓库配置、代码/WAR SHA、完整命令与退出码、开始结束时间、checkpoint/DB 查询与失败恢复日志。文件写出或邮件副作用不在同一数据库事务之内,须单独验收。