Apache DolphinScheduler 8 月报:权限安全加固,调度补火上线,性能与稳定性持续提升

Apache DolphinScheduler 8 月月报来啦!过去一个月,社区持续推进项目迭代,在功能优化、性能提升和生态建设等方面不断取得新进展。让我们一起看看 8 月 DolphinScheduler 又有哪些值得关注的更新,也感谢每一位参与贡献、积极反馈和支持社区的小伙伴,正是大家的共同努力,让 DolphinScheduler 持续成长!

📊 本月数据速览

指标 数值
🚀 合并 PR 总数 23
👥 贡献者人数 10
➕ 新增代码行 +3,702
➖ 删除代码行 -1,327
🔀 净变更行数 +2,375
📁 触达模块数 8
📝 文档文件触达数 5
🧪 测试文件触达数 28

🏆 贡献者排名

排名 GitHub 用户名 主要贡献方向 PR 数 +Lines -Lines 综合得分
🥇 @ruanwenjun 测试用例 / Tests 10 1602 1001 88.59
🥈 @njnu-seafish 性能优化 / Performance 3 818 288 29.09
🥉 @SEPURI-SAI-KRISHNA 问题定位与修复 / Debug & Fix 2 229 3 18.77
4. @kittimzhe 文档完善 / Documentation 2 4 4 14.02
5. @nikhiln64 问题定位与修复 / Debug & Fix 1 344 8 10.16
6. @hellodml 问题定位与修复 / Debug & Fix 1 136 1 9.45
7. @zhang-arvin 问题定位与修复 / Debug & Fix 1 10 3 9.04
8. @liang-wenjie 测试用例 / Tests 1 542 7 7.82
9. @hiSandog 测试用例 / Tests 1 17 1 6.06
10. @SbloodyS 架构与工程化 / Architecture 1 0 11 6.01

🔄 代码变更

按维度分布(功能特性 / 性能优化 / Bug 修复 / 架构改进)

维度 PR 数 占比
功能特性 6 26.1%
性能优化 2 8.7%
Bug 修复 9 39.1%
架构改进 6 26.1%

本月 Bug 修复(39.1%,9 项) 占比最高,叠加 6 项功能特性和 2 项性能优化,整体呈现「稳定性优先 + 稳步迭代新特性」的节奏。

📦 主要涉及模块

按 PR 触达次数排序。

排名 模块 PR 触达 新增行 删除行 净变更
1. dolphinscheduler-api 82 +2,132 -1,016 +1,116
2. dolphinscheduler-dao 25 +307 -201 +106
3. docs 14 +68 -48 +20
4. dolphinscheduler-ui 10 +74 -27 +47
5. dolphinscheduler-master 9 +374 -12 +362
6. dolphinscheduler-common 6 +64 -6 +58
7. dolphinscheduler-scheduler-plugin 6 +229 -4 +225
8. dolphinscheduler-task-plugin 4 +305 -2 +303
9. misc 3 +149 -11 +138

模块洞察

  • 🏛️ API 层(15次) 是本月绝对的改动重心,15/23 的 PR 都涉及 API 模块------主要集中在权限/授权加固过时接口清理
  • 🏗️ DAO 层(7次) 主要配合 API 层做查询优化(大字段排除)和权限查询逻辑改造
  • 🎨 UI 模块(5次) 虽触达不少,但以小改动为主(+49 净行),属配套型调整
  • 🔧 Master(4次) 聚焦任务重试、故障恢复等调度核心稳定性

🎯 对用户最有感的 8 件事

从「用户感知度」角度筛选本月最重要的变更,按影响面排序。

一. 🔐 权限/安全增强(7 项 PR)

代表性 PR:#18561 - Fix-18559API Align workflow mutations with project write permissions (#18561)

  • 作者:@ruanwenjun
  • 变更规模:+426 / -128 行
  • 本月同类 PR 数:7 项

用户价值:多租户隔离更严格,敏感操作更安全,合规性更强。本月连续 7 个 PR 围绕权限体系打补丁(项目写权限对齐、子工作流跨项目鉴权、数据源/集群授权校验、Actuator端点鉴权、用户列表脱敏、授权列表接口优化),是企业多租户场景的核心收益点。

重点关注场景

  • ✅ 工作流变更(创建/更新/删除)是否严格校验项目级 write 权限
  • ✅ 子工作流引用时,是否能校验「被引用工作流」的访问权限(防止越权)
  • ✅ 任务定义关联数据源时,是否校验当前用户对该数据源的访问权限
  • ✅ 集群查询 API 是否有一致性的权限校验
  • ✅ 用户列表接口是否脱敏 + 权限收敛
  • ✅ Actuator 敏感端点是否需要认证才能访问

同类 PR 完整列表

PR # 标题 作者 Diff
#18561 Fix-18559API Align workflow mutations with project write permissions (#18561) @ruanwenjun +426/-128
#18597 Fix-18596API Enforce permission checks for sub-workflow references (#18597) @ruanwenjun +450/-0
#18566 Fix-18565API Validate datasource access for task definitions (#18566) @ruanwenjun +342/-17
#18564 Improvement-18563API Refine datasource authorization list APIs (#18564) @ruanwenjun +102/-62
#18583 Fix-18582Authentication Align actuator endpoint matching (#18583) @ruanwenjun +149/-11
#18560 Improvement-18558API Harden user list access and responses (#18560) @ruanwenjun +65/-28
#18590 Improvement-18589API Align cluster query permissions (#18590) @ruanwenjun +59/-20

二. 🛡️ 稳定性/Bug修复(4 项 PR)

代表性 PR:#18573 - Fix-18570Master Detect wrapped CommandDuplicateHandleException in bootstrapError (#18570) (#18573)

  • 作者:@hellodml
  • 变更规模:+136 / -1 行
  • 本月同类 PR 数:4 项

用户价值:修复工作流/任务的异常状态问题,直接提升生产可靠性。维度维度上 Bug 修复 PR 共 9 项(本月主线),其余 Bug 类 PR 已归入「权限/K8S/DataX/文档」等专项小节,此处列出非专项的 4 项核心 Bug 修复。

重点关注场景

  • 失败任务重试:任务失败后重新创建实例时,运行时状态是否正确 reset(避免脏状态导致重试异常)
  • 重试时机计算 :任务重试调度时间是否按 endTime + retryInterval 计算,而非 startTime
  • Master 启动异常CommandDuplicateHandleException 被包装后能否被 bootstrapError 正确识别
  • 日志消息拼写:DataSourceServiceImpl 日志是否正确(避免排查时被误导)

同类 PR 完整列表

PR # 标题 作者 Diff
#18573 Fix-18570Master Detect wrapped CommandDuplicateHandleException in bootstrapError (#18570) (#18573) @hellodml +136/-1
#18541 Fix-18540Master Reset the runtime state when recreating a failed task instance (#18541) @SEPURI-SAI-KRISHNA +132/-0
#18539 Fix-18538Master Schedule task retry at endTime + retryInterval (#18539) @SEPURI-SAI-KRISHNA +97/-3
#18581 Improvement-18580api Fix typo in DataSourceServiceImpl log message (#18581) @kittimzhe +1/-1

三. ⏰ 调度策略/补火(1 项 PR)

代表性 PR:#18464 - DSIP-18454Scheduler Add schedule missed fire policy (#18464)

  • 作者:@liang-wenjie
  • 变更规模:+542 / -7 行
  • 本月同类 PR 数:1 项
策略 行为 适用场景
Skip 跳过错过的触发,等待下一次 cron 错过即错过,不希望补跑冲击系统
FireOnceNow 只补一次(立即执行),其余错过的丢弃 只要补最近一次的业务
FireAll 把所有错过的触发全部补齐(按原计划时间依次触发) 金融/对账场景,必须每次都跑

用户价值 :这是本月最大的新特性!当 Master 停机或调度线程阻塞导致错过 cron 触发时,现在可以配置 3 种策略应对「补火」场景。

重点关注场景

  • ✅ 新建/编辑调度时,UI 上能否看到「Missed Fire Policy」下拉选项
  • ✅ 模拟 Master 停机 2 小时(停掉 Master 进程再拉起),观察不同策略下的行为是否符合预期
  • ✅ 数据库升级脚本(3.5.0_schema)是否正确执行,t_ds_schedule 表新增字段是否存在

四. ⚡ 性能优化(2 项 PR)

代表性 PR:#18444 - Improvement-18443API\&DAO Optimize WorkflowInstanceMapper to exclude large text fields from list queries (#18444)

  • 作者:@njnu-seafish
  • 变更规模:+790 / -268 行
  • 本月同类 PR 数:2 项

用户价值 :工作流实例/任务实例列表查询时,不再把 global_paramsprocess_instance_json 等大 TEXT 字段一起查出来。列表页响应速度、数据库 IO、内存占用都会有明显改善,大规模部署场景收益突出。

重点关注场景

  • ✅ 工作流实例列表页分页查询响应时间(1000+ 实例时对比优化前后)
  • ✅ 打开单个工作流实例详情页,全局参数等大字段是否正常展示(详情接口还是会查)
  • ✅ 列表页导出/搜索等功能是否正常不受影响

同类 PR 完整列表

PR # 标题 作者 Diff
#18444 Improvement-18443API\&DAO Optimize WorkflowInstanceMapper to exclude large text fields from list queries (#18444) @njnu-seafish +790/-268
#18442 Improvement-18441API\&DAO Optimize TaskInstanceMapper to exclude large text fields from list queries (#18442) @njnu-seafish +17/-5

五. 🔌 任务类型/新数据源(1 项 PR)

代表性 PR:#18434 - Fix-18389DataX Read job definition from attached resource file when custom json is empty (#18434)

  • 作者:@nikhiln64
  • 变更规模:+344 / -8 行
  • 本月同类 PR 数:1 项

用户价值:DataX 用户之前必须把 JSON 内容粘贴到 UI 的自定义 JSON 框里,且无法复用资源中心的文件。现在支持「自定义 JSON 为空时,自动从资源文件读取」,与 SQL 任务从资源文件读 SQL 逻辑一致,体验更统一。

六. 🧹 API清理/工程化(5 项 PR)

代表性 PR:#18569 - Improvement-18568API Remove obsolete task update-with-upstream API (#18569)

  • 作者:@ruanwenjun
  • 变更规模:+2 / -507 行
  • 本月同类 PR 数:5 项

用户价值 :本月集中清理了 3 组过时 API(cluster query-by-code、task update-with-upstream、dynamic sub-workflow 相关),并同步更新了 incompatible.md。对升级用户来说需重点关注------如果你们有自研前端或自动化脚本用到了这些老 API,需要提前做适配。

同类 PR 完整列表

PR # 标题 作者 Diff
#18569 Improvement-18568API Remove obsolete task update-with-upstream API (#18569) @ruanwenjun +2/-507
#18557 Improvement-18556API Remove obsolete dynamic sub-workflow API (#18557) @ruanwenjun +2/-138
#18584 ChoreAPI Remove obsolete cluster query-by-code API (#18584) @ruanwenjun +5/-90
#18408 ChoreCommon Handle parentless paths in FileUtils (#18408) @hiSandog +17/-1
#18599 Chore Remove unused code- #18599 (#18599) @SbloodyS +0/-11

七. ☸️ K8S/云原生部署(1 项 PR)

代表性 PR:#18574 - Fix-17883 Fix K8s Alert HTTP test sending failed by using IP for non-StatefulSet pods (#17883) (#18574)

  • 作者:@zhang-arvin
  • 变更规模:+10 / -3 行
  • 本月同类 PR 数:1 项

用户价值:K8S 非 StatefulSet Pod(如 Deployment 模式)下,告警 HTTP 实例测试之前因按 hostname 寻址失败,修复后改用 IP 寻址,K8S 部署的告警通道可靠性提升。

八. 📚 文档/示例改进(2 项 PR)

代表性 PR:#18478 - Doc-18474Upgrade Fix zh/en incompatible upgrade docs out of sync (#18478)

  • 作者:@njnu-seafish
  • 变更规模:+11 / -15 行
  • 本月同类 PR 数:2 项

用户价值:修复了数据源文档和配置文档中的坏链接,同时中英文升级不兼容变更文档重新对齐,减少文档误导带来的踩坑。

同类 PR 完整列表

PR # 标题 作者 Diff
#18478 Doc-18474Upgrade Fix zh/en incompatible upgrade docs out of sync (#18478) @njnu-seafish +11/-15
#18578 Doc-18579 Fix malformed links in datasource and configuration docs (#18578) @kittimzhe +3/-3

⚠️ 升级与验证建议

风险等级评估

总体风险等级:🟠 中高风险

风险维度 评估 说明
核心模块变更 ⚠️ 是 API 模块 15/23 触达,需重点回归权限相关接口
Bug 修复数量 9 项 Bug修复较多,建议关注任务重试/失败恢复场景
权限/安全变更 7 项 ⚠️ 权限模型有较大变动,需全面验证鉴权逻辑
K8S/部署变更 1 项 ⚠️ 涉及部署脚本,需验证Helm/Docker部署
UI 变更 ⚠️ 前端有改动,需冒烟测试主要页面
数据库 Schema ⚠️ 是 DSIP-18464 有新增 DDL,升级脚本需确认执行

升级前准备

  1. 📦 备份数据库:升级前对 DolphinScheduler 元数据库做完整备份(mysqldump / pg_dump)
  2. 📋 检查 DDL 脚本 :核对 dolphinscheduler-dao/src/main/resources/sql/upgrade/3.5.0_schema/ 下新增脚本是否纳入升级流程
  3. 📝 阅读不兼容变更 :重点检查 <docs/docs/en/guide/upgrade/incompatible.md> 中本月标记的 4 组 API 移除
  4. 🧪 检查自研集成 :如使用 OpenAPI,用 grep 确认你们的代码里未用到这 3 个已移除接口:
    • cluster/query-by-code(PR #18584)
    • task/update-with-upstream(PR #18569)
    • 动态子工作流相关 API(PR #18557)
  5. 💾 配置文件备份 :备份 conf/ 目录所有配置

常见问题快速排查

现象 可能原因 排查方向
保存工作流时突然 403 PR #18561 权限校验更严格 检查当前用户在目标项目是否有 write 权限;子工作流引用的上游工作流是否也在授权范围
子工作流无法引用 PR #18597 新增跨项目校验 确认子工作流所在项目对当前用户授权
数据源绑定失败 403 PR #18566 新增数据源校验 用户需在「数据源授权」中被授予对应数据源权限
K8S 部署下告警 HTTP 测试失败 PR #18574 前后逻辑差异 确认 Pod 网络策略;检查日志中是按 hostname 还是 IP 连接
升级后调度未按预期补火 DSIP-18464 默认策略 Skip 检查 missed_fire_policy 字段值;如需补跑请手动切换策略
任务重试总是立即触发(不按间隔) PR #18539 修复后按 endTime 算 对比修复前后:重试时间 = 任务 结束时间 + retryInterval(非开始时间)
工作流实例列表加载变慢或报错 大字段排除 VO 字段不匹配 检查前端版本是否同步升级;或回滚看 #18444/#18442

🙏 致谢

感谢 2026 年 8 月为 Apache DolphinScheduler 贡献代码的 10 位贡献者:@ruanwenjun, @njnu-seafish, @SEPURI-SAI-KRISHNA, @kittimzhe, @nikhiln64, @hellodml, @zhang-arvin, @liang-wenjie, @hiSandog, @SbloodyS

你们的每一个 PR 都让 DolphinScheduler 在稳定性、可用性与生态扩展上持续进化!💪

📑 附录:本月合并 PR 全量明细

Bug 修复(9 项)

PR # 标题 作者 合并时间 影响模块 +Lines -Lines
#18541 Fix-18540Master Reset the runtime state when recreating a failed task instance (#18541) @SEPURI-SAI-KRISHNA 08-10 dolphinscheduler-master +132 -0
#18539 Fix-18538Master Schedule task retry at endTime + retryInterval (#18539) @SEPURI-SAI-KRISHNA 08-11 dolphinscheduler-master +97 -3
#18561 Fix-18559API Align workflow mutations with project write permissions (#18561) @ruanwenjun 08-19 dolphinscheduler-api +426 -128
#18573 Fix-18570Master Detect wrapped CommandDuplicateHandleException in bootstrapError (#18570) (#18573) @hellodml 08-21 dolphinscheduler-master +136 -1
#18566 Fix-18565API Validate datasource access for task definitions (#18566) @ruanwenjun 08-21 dolphinscheduler-api +342 -17
#18583 Fix-18582Authentication Align actuator endpoint matching (#18583) @ruanwenjun 08-25 misc +149 -11
#18597 Fix-18596API Enforce permission checks for sub-workflow references (#18597) @ruanwenjun 08-29 dolphinscheduler-api +450 -0
#18574 Fix-17883 Fix K8s Alert HTTP test sending failed by using IP for non-StatefulSet pods (#17883) (#18574) @zhang-arvin 08-31 dolphinscheduler-common +10 -3
#18434 Fix-18389DataX Read job definition from attached resource file when custom json is empty (#18434) @nikhiln64 08-31 dolphinscheduler-task-plugin dolphinscheduler-ui +344

性能优化(2 项)

PR # 标题 作者 合并时间 影响模块 +Lines -Lines
#18442 Improvement-18441API\&DAO Optimize TaskInstanceMapper to exclude large text fields from list queries (#18442) @njnu-seafish 08-07 dolphinscheduler-dao +17 -5
#18444 Improvement-18443API\&DAO Optimize WorkflowInstanceMapper to exclude large text fields from list queries (#18444) @njnu-seafish 08-26 docs dolphinscheduler-api dolphinscheduler-dao

功能特性(6 项)

PR # 标题 作者 合并时间 影响模块 +Lines -Lines
#18557 Improvement-18556API Remove obsolete dynamic sub-workflow API (#18557) @ruanwenjun 08-18 docs dolphinscheduler-api dolphinscheduler-common
#18560 Improvement-18558API Harden user list access and responses (#18560) @ruanwenjun 08-18 dolphinscheduler-api dolphinscheduler-dao dolphinscheduler-ui
#18564 Improvement-18563API Refine datasource authorization list APIs (#18564) @ruanwenjun 08-19 dolphinscheduler-api dolphinscheduler-dao +102
#18569 Improvement-18568API Remove obsolete task update-with-upstream API (#18569) @ruanwenjun 08-24 docs dolphinscheduler-api dolphinscheduler-dao
#18581 Improvement-18580api Fix typo in DataSourceServiceImpl log message (#18581) @kittimzhe 08-25 dolphinscheduler-api +1 -1
#18590 Improvement-18589API Align cluster query permissions (#18590) @ruanwenjun 08-26 dolphinscheduler-api +59 -20

架构改进(6 项)

PR # 标题 作者 合并时间 影响模块 +Lines -Lines
#18478 Doc-18474Upgrade Fix zh/en incompatible upgrade docs out of sync (#18478) @njnu-seafish 08-10 docs +11 -15
#18464 DSIP-18454Scheduler Add schedule missed fire policy (#18464) @liang-wenjie 08-12 docs dolphinscheduler-api dolphinscheduler-common
#18408 ChoreCommon Handle parentless paths in FileUtils (#18408) @hiSandog 08-19 dolphinscheduler-common +17 -1
#18578 Doc-18579 Fix malformed links in datasource and configuration docs (#18578) @kittimzhe 08-22 docs +3 -3
#18584 ChoreAPI Remove obsolete cluster query-by-code API (#18584) @ruanwenjun 08-28 docs dolphinscheduler-api dolphinscheduler-ui
#18599 Chore Remove unused code- #18599 (#18599) @SbloodyS 08-28 dolphinscheduler-api +0 -11
相关推荐
T型码农要学习1 小时前
开源项目11|Stable Diffusion WebUI:本地自建AI绘图,无限免费出图,彻底告别AI绘画会员次数限制
开源·ai绘画
动恰客流统计2 小时前
传统红外对射客流统计为何逐步淡出主流?准确率与场景限制深度分析
大数据·前端·人工智能
IT毕设梦工厂2 小时前
计算机毕业设计选题推荐:基于大数据的印度上市公司财务指标数据可视化分析|毕业设计选题|计算机毕设|选题推荐|毕设指导|项目定制|源码|高质量项目
大数据·hadoop·python·信息可视化·spark·课程设计·大数据毕设项目
小弥儿2 小时前
GitHub今日热榜 | 2026-09-02:i-have-adhd 登顶
学习·开源
SelectDB2 小时前
Doris 直查 Paimon 索引:快手湖上向量检索的共建与落地
大数据·数据库·数据分析
竣达技术2 小时前
UPS 供电风险保护方案网络远程控制:免代理 SSH/Telnet UPS 安全关机方案
网络·安全·ssh
龙亘川2 小时前
科技决策分析报表平台:科技服务・项目・成果转化・政策四维报表全链路业务建模
大数据·科技·ai·信息可视化·智慧城市
分布式存储与RustFS2 小时前
RustFS 多协议接入全景:S3 之外,Swift/Keystone 与 SFTP/FTPS 怎么选
云原生·开源·对象存储·分布式存储·s3·rustfs·性能基准
慧都小项2 小时前
看得见页面,却看不全风险:Burp Suite如何补齐API安全盲区
安全