You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级MarkLogic、DHF及Java Client API后JOBS数据库步骤信息捕获异常咨询

DHF升级后JOBS数据库步骤信息被覆盖的问题处理方案

问题分析

升级DHF从5.2.0到5.8.1后,新增的/data-hub/5/data-services/job/下的核心模块(尤其是finishStep.sjs)大概率改变了Job文档的更新逻辑:

  • 旧版本中finishStep操作会追加当前步骤的响应到stepResponses数组
  • 新版本默认实现可能改为替换整个stepResponses字段,导致之前的步骤数据被覆盖

排查步骤

  1. 检查finishStep.sjs的代码逻辑
    • 定位到更新Job文档的代码段,确认是否存在全量替换而非数组追加的逻辑:
      // 错误示例:直接覆盖stepResponses
      jobDoc.stepResponses = [currentStepResponse];
      xdmp.documentInsert(jobUri, jobDoc);
      
      正常逻辑应该是:
      // 正确逻辑:追加步骤响应
      if (!jobDoc.stepResponses) jobDoc.stepResponses = [];
      jobDoc.stepResponses.push(currentStepResponse);
      xdmp.documentInsert(jobUri, jobDoc, {merge: true});
      
  2. 对比升级前后Job文档结构
    • 导出未升级环境的正常Job文档,与升级后异常的Job文档对比,确认stepResponses字段的存储差异
  3. 查阅DHF版本变更记录
    • 查看5.2.0至5.8.1的Release Notes,确认是否有Job管理逻辑的官方变更说明,或已知的相关bug

解决方案:调整新增Job模块

若排查确认是finishStep.sjs的逻辑问题,需修改该模块代码:

  • 更新Job文档前,先读取现有文档的stepResponses数组
  • 将当前步骤的响应追加到数组中,再执行文档更新(建议使用merge: true参数避免全量覆盖)
  • 同步验证startJob.sjs和finishJob.sjs的逻辑,确保Job文档结构一致性

注意事项

  • 修改前备份原始模块文件,避免破坏DHF默认流程
  • 测试多步骤Job的完整执行链路,验证所有步骤的stepResponses均能被保留
  • 若为DHF官方bug,可提交Issue到官方仓库,同时用自定义修改作为临时修复方案

内容的提问来源于stack exchange,提问作者Ashish Patil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 16:29:51