文档首页/ 对象存储服务 OBS/ 常见问题/ Data+/ 触发器配置不当导致“无限循环”触发Data+工作流如何处理?
更新时间:2024-05-21 GMT+08:00
分享

触发器配置不当导致“无限循环”触发Data+工作流如何处理?

由于OBS只能按触发器前缀、后缀、事件源类型等条件触发Data+工作流,无法保证触发消息不出现“无限循环”的场景。如果出现“无限循环”,只能先删除桶的事件触发器。主要有以下两个场景:

场景1:触发器源桶和函数执行输出目标桶是同一个桶的无限循环

案例1:使用Data+内置函数触发“无限循环”

用户创建一条Data+工作流workflowA,在工作流中使用了内置的“媒资转码”函数,且配置“媒资转码”函数的转码输出桶为target-bucket。然后,在target-bucket桶上配置触发器关联工作流workflowA。如果自定义函数输出的对象前缀或后缀匹配触发器triggerA的前后缀条件(比如:前缀和后缀不配置,或者对象满足触发器条件),则转码的输出会再次触发Data+工作流,从而导致用户工作流不停的执行,出现“无限循环”。

图1 Data+工作流配置workflowA
图2 Data+工作流触发器triggerA配置

案例2:自定义函数触发“无限循环”

用户创建一条Data+工作流workflowA,在工作流种使用了自定义函数,且自定义函数会向桶target-bucket输出对象。然后,在target-bucket桶上配置触发触发器triggerA关联工作流workflowA。如果自定义函数输出的对象前缀或后缀匹配触发器triggerA的前后缀条件(比如:前缀和后缀不配置,或者对象满足触发器条件),则自定义函数的输出会再次触发Data+工作流,从而导致用户工作流不停的执行,出现“无限循环”。

图3 Data+工作流配置workflowA
图4 Data+触发器配置triggerA

场景2:触发器源桶和函数执行输出目标桶是不同桶的无限循环

案例1:使用Data+内置函数触发“无限循环”

用户创建一条Data+工作流workflowA,在工作流中使用了内置的“媒资转码”函数,且配置“媒资转码”函数的转码输出桶为target-bucket。用户创建一条Data+工作流workflowB,在工作流中使用了内置的“媒资转码”函数,且配置“媒资转码”函数的转码输出桶为source-bucket-beta。然后,在source-bucket-beta桶上配置触发器triggerA关联工作流workflowA,在target-bucket桶上配置触发器triggerB关联工作流workflowB。如果,triggerA触发workflowA生成的对象匹配上了triggerB的条件(比如:两个触发器的前缀和后缀不配置),最终,转码的输出会再次触发Data+工作流,从而导致用户工作流workflowA和workflowB不停的执行,出现“无限循环”。

图5 Data+工作流配置workflowA
图6 Data+工作流配置workflowB
图7 Data+工作流触发器triggerA配置
图8 Data+工作流触发器triggerB配置

相关文档