DolphinScheduler停止工作流实例删除不了,造成master空指针

文章讨论了如何在数据库中创建一个SQL触发器,用于在t_ds_process_instance表的状态变为准备停止或停止时,自动将状态更新到t_ds_task_instance表,并设置为失败状态。

状态描述

1正在执行 4准备停止 5停止 6失败 7成功

解决编写触发器

元数据表解析

t_ds_process_instance 任务实列

t_ds_task_instance 工作流实例

t_ds_task_instance 的 process_instance_id 字段 ,和 t_ds_process_instance id 是关联的
DELIMITER //

CREATE TRIGGER update_process_state BEFORE UPDATE ON t_ds_process_instance
FOR EACH ROW
BEGIN
    IF OLD.state = 4 OR OLD.state = 5 THEN
        SET NEW.state = 6;

        UPDATE t_ds_task_instance
        SET state = 6
        WHERE process_instance_id = NEW.id;
    END IF;
END //

DELIMITER ;
DolphinScheduler工作流实例启动后立刻失败,可能有以下原因及相应的解决办法: ### 数据库重复键问题(duplicate key错误) 在现场临时搭建DolphinScheduler并导入工作流后,可能会出现后台报duplicate key错误,导致工作流实例无法正常运行。这种情况可能是由于数据库中存在重复的键值,违反了数据库的唯一性约束。 解决办法:需检查数据库表结构和数据,找出重复的键值并进行处理,可能需要手动删除重复数据或者修改插入逻辑,以避免重复键的插入。 ### taskParam对象里resourceList为null 当taskParam对象里的resourceList为null时,会导致ds报错NPE。这意味着任务参数中缺少必要的资源列表信息,从而使工作流实例无法正常启动。 解决办法:确保taskParam对象中的resourceList不为null,并正确配置资源列表信息。以下是一个示例代码,展示如何正确设置taskParam对象: ```json { "taskParams": { "localParams": [ { "prop": "name", "direct": "OUT", "type": "VARCHAR", "value": "Bob", "boolGlobal": false } ], "resourceList": ["resource1", "resource2"] } } ``` ### 其他可能的原因 - 数据库连接问题:DolphinScheduler依赖数据库来存储工作流定义、任务实例等信息。如果数据库连接出现问题,工作流实例可能无法正常启动。检查数据库配置,确保数据库服务正常运行,并且DolphinScheduler能够正确连接到数据库。 - 资源不足:工作流的执行需要一定的系统资源,如CPU、内存、磁盘空间等。如果系统资源不足,可能会导致工作流实例启动失败。检查系统资源使用情况,确保有足够的资源来运行工作流。 - 任务类型配置错误:不同的任务类型(如Shell、Spark、Flink等)需要特定的配置和环境支持。如果任务类型配置错误,可能会导致工作流实例启动失败。检查任务类型的配置,确保配置正确。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值