Skip to content

Releases: aizuda/snail-job

SnailJob 1.4.0-beta1

01 Mar 03:55
Compare
Choose a tag to compare
  1. sdk手动触发调用时,支持传递临时参数【优化】
  2. oracle sql 索引名过长 【BUG】
  3. 默认rpc-type: grpc【新增】
  4. 场景添加回调配置 【新增】
  5. Converter移入convert包【优化】
  6. 添加 @EqualsAndHashCode(callSuper=true) 去除warning 【优化】
  7. 消除 client-starter 依赖冲突(error_prone_annotations)【优化】
  8. 消除 server-starter 依赖冲突(checker-qual,error_prone_annotations)【优化】
  9. 优化maven结构,根pom统一管理版本【优化】
  10. 修复定时任务触发常驻任务时,通过任务开关无法正常关闭定时任务问题 【BUG】
  11. 修复了oracle数据库更新定时任务状态失败问题【BUG】
  12. 修复代码编辑器格式化问题【BUG】
  13. 修复周期性cron问题【BUG】
  14. 重试模块服务端重构【新增】
  • sj_retry_task_0 改为 sj_retry
  • sj_retry_dead_letter_0 改为 sj_retry_dead_letter
  • sj_retry_task_log 改为 sj_retry_task_log

注意
本次重点重构了重试模块的流程,由之前的同步调度客户端改为异步调度客户端. 将支持更高并发的调度同时大大提高服务端的稳定性

MYSQL变更(其他DB变更请自行同步)

全量的SQL请参考项目 /doc/sql/x.sql

ALTER TABLE `sj_group_config` DROP COLUMN `bucket_index`;

ALTER TABLE `sj_job` MODIFY COLUMN `block_strategy` tinyint(4) NOT NULL DEFAULT 1 COMMENT '阻塞策略 1、丢弃 2、覆盖 3、并行 4、恢复';

ALTER TABLE `sj_retry_scene_config` ADD COLUMN `block_strategy` tinyint(4) NOT NULL DEFAULT 1 COMMENT '阻塞策略 1、丢弃 2、覆盖 3、并行' AFTER `route_key`;
ALTER TABLE `sj_retry_scene_config` ADD COLUMN `cb_status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '回调状态 0、不开启 1、开启' AFTER `block_strategy`;
ALTER TABLE `sj_retry_scene_config` ADD COLUMN `cb_trigger_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '1、默认等级 2、固定间隔时间 3、CRON 表达式' AFTER `cb_status`;
ALTER TABLE `sj_retry_scene_config` ADD COLUMN `cb_max_count` int(11) NOT NULL DEFAULT 16 COMMENT '回调的最大执行次数' AFTER `cb_trigger_type`;
ALTER TABLE `sj_retry_scene_config` ADD COLUMN `cb_trigger_interval` varchar(16) NOT NULL DEFAULT '' COMMENT '回调的最大执行次数' AFTER `cb_max_count`;

ALTER TABLE `sj_retry_task_log_message` DROP COLUMN `unique_id`;
ALTER TABLE `sj_retry_task_log_message` ADD COLUMN `retry_id` bigint(20) NOT NULL COMMENT '重试信息Id' AFTER `group_name`;
ALTER TABLE `sj_retry_task_log_message` ADD COLUMN `retry_task_id` bigint(20) NOT NULL COMMENT '重试任务Id' AFTER `retry_id`;

CREATE INDEX idx_namespace_id_group_name_retry_task_id ON sj_retry_task_log_message (`namespace_id`, `group_name`, `retry_task_id`);
ALTER TABLE sj_retry_task_log_message DROP INDEX idx_namespace_id_group_name_scene_name;

CREATE TABLE `sj_retry_dead_letter`
(
   `id`            bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
   `namespace_id`  varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
   `group_name`    varchar(64)         NOT NULL COMMENT '组名称',
   `scene_name`    varchar(64)         NOT NULL COMMENT '场景名称',
   `idempotent_id` varchar(64)         NOT NULL COMMENT '幂等id',
   `biz_no`        varchar(64)         NOT NULL DEFAULT '' COMMENT '业务编号',
   `executor_name` varchar(512)        NOT NULL DEFAULT '' COMMENT '执行器名称',
   `args_str`      text                NOT NULL COMMENT '执行方法参数',
   `ext_attrs`     text                NOT NULL COMMENT '扩展字段',
   `create_dt`     datetime            NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
   PRIMARY KEY (`id`),
   KEY `idx_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`),
   KEY `idx_idempotent_id` (`idempotent_id`),
   KEY `idx_biz_no` (`biz_no`),
   KEY `idx_create_dt` (`create_dt`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 0
  DEFAULT CHARSET = utf8mb4 COMMENT ='死信队列表'
;

CREATE TABLE `sj_retry`
(
   `id`              bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
   `namespace_id`    varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
   `group_name`      varchar(64)         NOT NULL COMMENT '组名称',
   `scene_name`      varchar(64)         NOT NULL COMMENT '场景名称',
   `idempotent_id`   varchar(64)         NOT NULL COMMENT '幂等id',
   `biz_no`          varchar(64)         NOT NULL DEFAULT '' COMMENT '业务编号',
   `executor_name`   varchar(512)        NOT NULL DEFAULT '' COMMENT '执行器名称',
   `args_str`        text                NOT NULL COMMENT '执行方法参数',
   `ext_attrs`       text                NOT NULL COMMENT '扩展字段',
   `next_trigger_at` bigint(13)          NOT NULL COMMENT '下次触发时间',
   `retry_count`     int(11)             NOT NULL DEFAULT 0 COMMENT '重试次数',
   `retry_status`    tinyint(4)          NOT NULL DEFAULT 0 COMMENT '重试状态 0、重试中 1、成功 2、最大重试次数',
   `task_type`       tinyint(4)          NOT NULL DEFAULT 1 COMMENT '任务类型 1、重试数据 2、回调数据',
   `bucket_index`    int(11)             NOT NULL DEFAULT 0 COMMENT 'bucket',
   `parent_id`       bigint(20)          NOT NULL DEFAULT 0 COMMENT '父节点id',
   `deleted`         bigint(20)          NOT NULL DEFAULT 0 COMMENT '逻辑删除',
   `create_dt`       datetime            NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
   `update_dt`       datetime            NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
   PRIMARY KEY (`id`),
   KEY `idx_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`),
   KEY `idx_namespace_id_group_name_retry_status` (`namespace_id`, `group_name`, `retry_status`),
   KEY `idx_idempotent_id` (`idempotent_id`),
   KEY `idx_biz_no` (`biz_no`),
   KEY `idx_parent_id` (`parent_id`),
   KEY `idx_create_dt` (`create_dt`),
   UNIQUE KEY `uk_name_task_type_idempotent_id_deleted` (`namespace_id`, `group_name`, `task_type`, `idempotent_id`, `deleted`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 0
  DEFAULT CHARSET = utf8mb4 COMMENT ='重试信息表'
;

CREATE TABLE `sj_retry_task`
(
   `id`               bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
   `namespace_id`     varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
   `group_name`       varchar(64)         NOT NULL COMMENT '组名称',
   `scene_name`       varchar(64)         NOT NULL COMMENT '场景名称',
   `retry_id`         bigint(20)          NOT NULL COMMENT '重试信息Id',
   `ext_attrs`        text                NOT NULL COMMENT '扩展字段',
   `task_status`      tinyint(4)          NOT NULL DEFAULT 1 COMMENT '重试状态',
   `task_type`        tinyint(4)          NOT NULL DEFAULT 1 COMMENT '任务类型 1、重试数据 2、回调数据',
   `operation_reason` tinyint(4)          NOT NULL DEFAULT 0 COMMENT '操作原因',
   `client_info`      varchar(128)        DEFAULT NULL COMMENT '客户端地址 clientId#ip:port',
   `create_dt`        datetime            NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
   `update_dt`        datetime            NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
   PRIMARY KEY (`id`),
   KEY `idx_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`),
   KEY `task_status` (`task_status`),
   KEY `idx_create_dt` (`create_dt`),
   KEY `idx_retry_id` (`retry_id`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 0
  DEFAULT CHARSET = utf8mb4 COMMENT ='重试任务表'
;

DROP TABLE sj_retry_dead_letter_0;
DROP TABLE sj_retry_task_0;
DROP TABLE sj_retry_task_log;

SnailJob 1.3.0

23 Jan 13:28
Compare
Choose a tag to compare
  1. 新增Grpc通讯模块【新增】
  2. 修改服务端默认端口号为17888【优化】
  3. 设置客户端client为-1时,支持随机端口号【新增】
  4. 邮箱通知添加额外的自定义属性【新增】
  5. 增加删除功能OpenApi【新增】
  6. isRetry改为retryStatus 【优化】
  7. 将内置执行器移入builtin包【优化】
  8. 调整客户端注册逻辑;使用主节点模式对客户端进行续签【优化】
  9. 优化重试场景、定时任务、工作流告警通知配置【优化】
  10. 手动执行任务/工作流支持传入临时参数【新增】
  11. 定时任务新增负责人选项【新增】
  12. 定时任务增加执行器信息搜索条件【新增】
  13. 支持无客户端时告警功能【新增】
  14. 客户执行失败支持显示失败原因【新增】
  15. 新增GRPC重连事件【新增】
  16. 负责人支持清除【新增】
  17. 优化cron表达式解析错误异常信息

注意
本次新增了Grpc协议,后续计划逐渐废弃Netty请大家尽快切换

snail-job.rpc-type=grpc

MYSQL变更(其他DB变更请自行同步)

全量的SQL请参考项目 /doc/sql/x.sql

ALTER TABLE `sj_notify_config`
   ADD COLUMN `notify_name` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '通知名称',
   DROP COLUMN `business_id`;

ALTER TABLE `sj_job`
   ADD COLUMN `notify_ids` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '通知告警场景配置id列表',
   ADD COLUMN `owner_id`   bigint(20)   NULL COMMENT '负责人id';

ALTER TABLE `sj_retry_scene_config`
   ADD COLUMN `notify_ids` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '通知告警场景配置id列表';

ALTER TABLE `sj_workflow`
   ADD COLUMN `notify_ids` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '通知告警场景配置id列表';

SnailJob 1.3.0-beta2

18 Jan 01:21
Compare
Choose a tag to compare
  1. 修复retryStatus为NULL问题
  2. 优化cron表达式解析错误异常信息
  3. 修复https://gitee.com/aizuda/snail-job/issues/IBHA4U

SnailJob 1.3.0-beta1.1

12 Jan 03:33
Compare
Choose a tag to compare
  1. 静态分片参数 taskBatchId 没有设置【BUG】
  2. 修复job、工作流notify和场景的notifyIds为null序列化问题【BUG】
  3. 修复定时任务普通用户添加定时任务无权限问题【BUG】
  4. 修复重试场景重试数量超过阈值定时任务告警空指针异常【BUG】
  5. 修复上下文值为null 合并异常问题 【BUG】
  6. 新增GRPC重连事件【新增】
  7. 负责人支持清除【新增】

SnailJob 1.3.0-beta1

01 Jan 03:20
2ec3ff0
Compare
Choose a tag to compare
  1. 新增Grpc通讯模块【新增】
  2. 修改服务端默认端口号为17888【优化】
  3. 设置客户端client为-1时,支持随机端口号【新增】
  4. 邮箱通知添加额外的自定义属性【新增】
  5. 增加删除功能OpenApi【新增】
  6. isRetry改为retryStatus 【优化】
  7. 将内置执行器移入builtin包【优化】
  8. 调整客户端注册逻辑;使用主节点模式对客户端进行续签【优化】
  9. 优化重试场景、定时任务、工作流告警通知配置【优化】
  10. 手动执行任务/工作流支持传入临时参数【新增】
  11. 定时任务新增负责人选项【新增】
  12. 定时任务增加执行器信息搜索条件【新增】
  13. 支持无客户端时告警功能【新增】
  14. 客户执行失败支持显示失败原因新增】

注意
本次新增了Grpc协议,后续计划逐渐废弃Netty请大家尽快切换

snail-job.rpc-type=grpc

MYSQL变更(其他DB变更请自行同步)

全量的SQL请参考项目 /doc/sql/x.sql

ALTER TABLE `sj_notify_config`
   ADD COLUMN `notify_name` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '通知名称',
   DROP COLUMN `business_id`;

ALTER TABLE `sj_job`
   ADD COLUMN `notify_ids` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '通知告警场景配置id列表',
   ADD COLUMN `owner_id`   bigint(20)   NULL COMMENT '负责人id';

ALTER TABLE `sj_retry_scene_config`
   ADD COLUMN `notify_ids` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '通知告警场景配置id列表';

ALTER TABLE `sj_workflow`
   ADD COLUMN `notify_ids` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '通知告警场景配置id列表';

SnailJob 1.2.0

16 Nov 02:48
Compare
Choose a tag to compare

本次升级为1.2.0正式版本包含(1.2.0-beta1,1.2.0-beta2)

  1. 定时、重试任务清除时间一小时改为四小时【优化】
  2. 修复日志清除BUG【BUG】
  3. 信创arm环境下Docker官方镜像无法运行的问题【BUG】
  4. 升级依赖包消除 CVE【优化】
  5. 修复工作流编排下的http内置执行器在请求头中透传上下文中value包含中文问题【BUG】
  6. 客户端日志上报组件 org.apache.log4j.MDC修改为org.slf4j.MDC 【优化】

SnailJob 1.2.0-beta2

25 Oct 02:44
Compare
Choose a tag to compare
  1. 新增OpenApi功能【新增】
  2. 修复Sharding和Map方法修饰符错误【BUG】
  3. 内置脚本执行器支持自定义编码;【优化】
  4. 内置http执行器支持工作流任务在请求头中透传工作流上下文内容【优化】
  5. 定时任务使用恢复阻塞策略时,只重新调用不成功的任务【优化】
  6. 修复MapReduce模式Reduce、MergeReduce阶段异常更新工作流上下文 【BUG】
  7. 去除工作流节点stop相关重复代码【优化】
  8. 修复日志清除BUG【BUG】
  9. 修复服务端生成channel并发问题【BUG】
  10. 修复客户端分片参数为ShardingJobArgs时不生效问题【BUG】
  11. 按 pgsql 数据库补齐 大金 Mapper.xml【BUG】
  12. 删除日志的全局开关【优化】
  13. 修复oracle任务状态变更偶发失败情况【优化】
  14. 升级MP版本3.5.8【优化】
  15. 修复客户端获取线程时的并发问题【BUG】
  16. 添加snail-job的window启动脚本.【新增】
  17. 添加snail-job启动Shell脚本【新增】
  18. 批次状态查询支持多选【新增】

SnailJob 1.2.0-beta1.1

09 Sep 13:22
Compare
Choose a tag to compare
  1. 修复并行度大于1时,map任务执行失败问题
  2. 修复前端回显问题

SnailJob 1.2.0-beta1

08 Sep 07:15
Compare
Choose a tag to compare
  1. 新增人大金仓数据库【新增】
  2. 优化mybatis xml的加载顺序, 支持多个id同时加载【优化】
  3. docker-compose.yaml 更新达梦镜像【优化】
  4. 增加工作流决策节点模拟上下文校验结果返回【新增】
  5. 优化json转换失败的日志【优化】
  6. 增加第一个及最后一个客户端路由功能【新增】
  7. 增加路由缓存定期清理功能【新增】
  8. 修复Map任务问题不能重试【BUG】
  9. PaginationInnerInterceptor不制定 dbType,由 mp 自动管理,解决 Oracle 11g分页兼容问题。【优化】
  10. 去除动态tablePrefix配置【优化】
  11. 修复Map/MapReduce重试问题,及手动暂停相关逻辑【BUG】
  12. 新增CMD、PowerShell、Shell、Http相关执行器【新增】
  13. 修复oracle任务状态变更偶发失败情况【BUG】
  14. 重构结果处理逻辑【优化】
  15. 去除定时任务结果更新的分布式锁【优化】
  16. map和map reduce支持配置参数全路径传递【新增】
  17. 优化客户端线程池,当获取缓存线程池时才设置并行度【优化】
  18. 添加任务执行时间【新增】

SnailJob 1.1.2

14 Aug 01:05
Compare
Choose a tag to compare
  1. 修复Oracel问题(issues/IAJRQW)
  2. 修复SpringContext=>SnailSpringContext(issues/IAJKDH)