如何恢复Achelous 作业

生物信息流程开发和实际分析过程中,经常涉及对流程的调试。因此需要对运行至中途的任务进行恢复操作,Achelous 结合生物信息工作人员的需要,开发了作业恢复机制,可以使用户轻松实现对流程修改后的继续运行,而无需从头运行程序。


作业运行状态说明

对于通过Achelous 提交的任务,其可能存在的作业状态如下:

作业状态 状态描述
CREATED 作业刚提交,尚未调度执行
RUNNING 作业正在运行。作业在执行流程的过程中,流程的每个阶段都会提交一个或多个任务到后端执行。这些阶段可能暂时没有资源,不能运行,处于等待状态。但是作业仍然会处于RUNNING 状态。
COMPLETE 作业执行完成,没有异常退出。如果流程有很多个阶段,表示每个阶段都正常完成。
FAIL 作业由于平台原因(例如引用不存在的存储)的一个或者多个阶段执行失败,且用户不可恢复。
CANCELED 作业被用户取消,作业正在执行且未完成的所有阶段的任务都将会被结束。
PAUSED 作业被暂停。作业将记住暂停时候的状态,如果用户恢复作业,作业将被恢复为暂停时候的状态继续执行。注意暂停作业时,作业产生的正在运行的任务不会被停止。但是作业将停止调度新的阶段和任务。
PSUDONE 作业执行部分完成,同时由于某些阶段的失败造成作业无法继续执行的结束状态。

对于PSUDONE 可以进行恢复操作。而FAIL 状态的任务,通常分析人员无法直接参与恢复,需要系统管理员介入。

造成作业PSUDONE 状态的原因

通常而言,一个作业PSUDONE 的原因主要有以下几种情况:

  • 流程WDL 脚本编写存在错误
  • 镜像不存在或镜像中程序路径存在错误
  • 计算资源分配不足(如作业内存分配太小)

[!TIP|style:flat]
如果作业参数填写存在错误,则无法进行恢复。

通过Achelous biocli 进行作业恢复

以下面的流程为例

## File name: samtools_view.wdl

task samtoolsview{
    File input_sam 
    command{
        samtoolsview ${input_sam} > my.result.bam ## 命令存在错误
    }
    ...
}

该流程对应的作业提交后,由于命令存在错误,会造成作业进入PSUDONE 状态。

此时,首先对WDL 脚本进行修改:

## File name: samtools_view.wdl

task samtoolsview{
    File input_sam 
    command{
        samtools view -B ${input_sam} > my.result.bam ## 命令错误已修正
    }
    ...
}

保存后,进行流程的更新

biocli pipeline update [pipeline.json] -d [wdl resource dir]

更新后,对作业进行恢复操作

biocli job recover -i [psudone-job-id]

即可对该作业进行恢复,恢复后的作业会保持前面正常结束的步骤对应结果,由错误步骤处重新运行。


biocli job recover 完整参数说明

biocli job recover 命令支持多种选项,可以灵活地控制恢复行为:

biocli job recover [选项]
选项 默认值 说明
-i / --id * 指定作业 ID,默认为 * 表示匹配所有
-o / --opt default 恢复选项:default(默认方式)或 skippendingstages(跳过等待中的阶段)
-S / --span 按完成时间范围筛选,格式 [2017-06-01 12:00:00, 2017-07-01 12:00:00]
-p / --pipeline "" 按流程名称筛选
-n / --count -1 指定恢复作业数量
-r / --retry_taskid 指定重试的 task ID(无论是否已完成),可多次指定
-e / --change_epoch false 恢复时变更 WDL 引擎的 epoch
-c / --recover_cromwell_job false 恢复 Cromwell 作业
-f / --file Cromwell 源文件
-O / --options Cromwell 选项 JSON 文件
-z / --zipfile Cromwell 导入 ZIP 文件

使用示例

恢复单个作业

[demo@Cc1Xtcls]$ biocli job recover -i d0a35ca2

恢复指定流程的所有失败作业

[demo@Cc1Xtcls]$ biocli job recover -p demo_pipeline

恢复时跳过等待中的阶段

[demo@Cc1Xtcls]$ biocli job recover -i d0a35ca2 -o skippendingstages

恢复时指定重试特定任务

[demo@Cc1Xtcls]$ biocli job recover -i d0a35ca2 -r paladin-task.a132c6b8

批量恢复指定时间范围内的失败作业

[demo@Cc1Xtcls]$ biocli job recover -S "[2025-01-01 00:00:00, 2025-06-01 00:00:00]" -n 10
Powered by XTAO TechnologyLast Modified On:2021 2026-06-05 09:21:50

results matching ""

    No results matching ""