为何亲和组example_affinity_group内无依赖的step_2等待step_1完成?
问题分析:流水线亲和组导致未配置依赖的步骤等待组外步骤
场景与配置
我们有一条名为example_pipeline的流水线,包含:
step_1:不属于任何亲和组step_2和step_3:同属example_affinity_group亲和组
流水线YML配置如下:
pipelines: - name: example_pipeline steps: - name: step_1 type: Bash execution: onExecute: - echo "1" - name: step_2 type: Bash configuration: affinityGroup: example_affinity_group execution: onExecute: - echo "2" - name: step_3 type: Bash configuration: affinityGroup: example_affinity_group inputSteps: - name: step_1 - name: step_2 execution: onExecute: - echo "3"
流水线图形视图:
问题:step_2未配置依赖step_1,但实际执行时却在等待step_1完成,这是为什么?
原因解析
这是由亲和组的执行特性导致的:当同一个亲和组中的某一个步骤配置了对组外步骤的依赖(此处为step_3依赖step_1),整个亲和组会被视为一个统一的执行单元,组内的所有步骤都会等待该组外依赖完成后才启动执行。
亲和组的设计逻辑是让组内步骤共享执行上下文与前置依赖条件,只要组内有步骤依赖了组外的步骤,整个组的所有步骤都会继承这个依赖,因此step_2虽然没直接配置依赖step_1,但因为同组的step_3依赖了step_1,它也会跟着等待step_1完成后才开始运行。
内容的提问来源于stack exchange,提问作者KunalMZ
相关产品推荐
相关产品推荐

