如何恢复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]
即可对该作业进行恢复,恢复后的作业会保持前面正常结束的步骤对应结果,由错误步骤处重新运行。