DEV Community

Chen Debra
Chen Debra

Posted on

What’s New in Apache DolphinScheduler This August: Stronger Security, Smarter Scheduling, and Better Stability

The Apache DolphinScheduler August Monthly Report is here! Over the past month, the community continued to move the project forward with new improvements across functionality, performance, stability, and ecosystem development. Let’s take a closer look at the updates that stood out in August. And as always, a huge thank-you to everyone who contributed code, shared feedback, and supported the community. Every contribution helps DolphinScheduler continue to evolve!

📊 August at a Glance

Metric Value
🚀 PRs Merged 23
👥 Contributors 10
➕ Lines Added +3,702
➖ Lines Deleted -1,327
🔀 Net Lines Changed +2,375
📁 Modules Touched 8
📝 Documentation Files Touched 5
🧪 Test Files Touched 28

🏆 Top Contributors

Rank GitHub Username Primary Contribution Area PRs +Lines -Lines Overall Score
🥇 @ruanwenjun Tests 10 1602 1001 88.59
🥈 @njnu-seafish Performance 3 818 288 29.09
🥉 @SEPURI-SAI-KRISHNA Debugging & Fixes 2 229 3 18.77
4. @kittimzhe Documentation 2 4 4 14.02
5. @nikhiln64 Debugging & Fixes 1 344 8 10.16
6. @hellodml Debugging & Fixes 1 136 1 9.45
7. @zhang-arvin Debugging & Fixes 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 & Engineering 1 0 11 6.01

🔄 Code Changes

Breakdown by Category: Features / Performance / Bug Fixes / Architecture

Category PRs Share
Features 6 26.1%
Performance Improvements 2 8.7%
Bug Fixes 9 39.1%
Architecture Improvements 6 26.1%

Bug fixes accounted for the largest share of this month’s changes, at 39.1% (9 PRs). Combined with 6 feature PRs and 2 performance improvements, the overall development rhythm was clear: stability first, with a steady stream of new capabilities.

📦 Key Modules

Ranked by the number of PR touches.

Rank Module PR Touches Lines Added Lines Deleted Net Change
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

What the module breakdown tells us:

  • 🏛️ API (15 touches) was the clear focus of this month’s changes, with 15/23 PRs involving the API module. Most of the work centered on strengthening authorization and removing obsolete APIs.
  • 🏗️ DAO (7 touches) mainly supported the API changes, including query optimization by excluding large text fields and updates to authorization query logic.
  • 🎨 UI (5 touches) saw several touchpoints, but most were relatively small changes (+49 net lines), serving primarily as supporting updates.
  • 🔧 Master (4 touches) focused on scheduling stability, including task retries and failure recovery.

🎯 8 Changes Users Will Notice Most

The following updates are ranked by their potential user impact and focus on the changes that matter most in real-world deployments.

1. 🔐 Stronger Permissions and Security — 7 PRs

Representative PR: #18561 — [Fix-18559][API] Align workflow mutations with project write permissions (#18561)

  • Author: @ruanwenjun
  • Change size: +426 / -128 lines
  • PRs in this category this month: 7

Why it matters: Tenant isolation is now stricter, sensitive operations are better protected, and the overall security and compliance posture is stronger. Seven PRs this month focused on strengthening the permission model, covering project write-permission checks, cross-project authorization for sub-workflows, datasource and cluster authorization, Actuator endpoint authentication, user-list data masking, and authorization API optimization. These changes are particularly important for enterprise and multi-tenant deployments.

Key scenarios to verify:

  • ✅ When creating, updating, or deleting a workflow, does the system strictly verify project-level write permissions?
  • ✅ When referencing a sub-workflow, can the system verify that the user also has permission to access the referenced workflow, preventing unauthorized access across projects?
  • ✅ When a task definition references a datasource, does the system verify that the current user has access to that datasource?
  • ✅ Do cluster query APIs enforce permission checks consistently?
  • ✅ Are user-list responses properly masked, with permissions appropriately restricted?
  • ✅ Do sensitive Actuator endpoints require authentication before they can be accessed?

Full list of related PRs:

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

2. 🛡️ Stability and Bug Fixes — 4 PRs

Representative PR: #18573 — [Fix-18570][Master] Detect wrapped CommandDuplicateHandleException in bootstrapError (#18570) (#18573)

  • Author: @hellodml
  • Change size: +136 / -1 lines
  • PRs in this category this month: 4

Why it matters: These fixes address abnormal workflow and task states, directly improving reliability in production. There were 9 bug-fix PRs in total this month, making bug fixing the largest category. The other bug-fix PRs are covered in dedicated sections for permissions, K8s, DataX, and documentation. The four core fixes below focus on issues outside those categories.

Key scenarios to verify:

  • Failed task retries: When recreating a failed task instance, is the runtime state correctly reset to prevent stale state from causing retry failures?
  • Retry timing: Is the retry scheduled based on endTime + retryInterval rather than startTime?
  • Master startup failures: Can bootstrapError correctly identify a CommandDuplicateHandleException after it has been wrapped?
  • Log messages: Has the typo in DataSourceServiceImpl log messages been corrected to avoid confusion during troubleshooting?

Full list of related PRs:

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

3. ⏰ Scheduling Policies / Missed-Fire Handling — 1 PR

Representative PR: #18464 — [DSIP-18454][Scheduler] Add schedule missed fire policy (#18464)

  • Author: @liang-wenjie
  • Change size: +542 / -7 lines
  • PRs in this category this month: 1
Policy Behavior Best For
Skip Skip missed triggers and wait for the next cron trigger When missed runs should simply be skipped to avoid putting additional load on the system
FireOnceNow Trigger only once immediately and discard the remaining missed runs When only the most recent missed run needs to be executed
FireAll Execute all missed triggers sequentially according to their original scheduled times Financial, reconciliation, and other scenarios where every scheduled run must be executed

Why it matters: This is the biggest new feature of the month. If the Master is down or the scheduling thread is blocked and cron triggers are missed, you can now configure one of three policies to determine how DolphinScheduler handles those missed triggers.

Key scenarios to verify:

  • ✅ When creating or editing a schedule, does the UI display the Missed Fire Policy dropdown?
  • ✅ Simulate a two-hour Master outage by stopping the Master process and starting it again. Do the different policies behave as expected?
  • ✅ Does the database upgrade script (3.5.0_schema) execute correctly, and does the t_ds_schedule table contain the newly added field?

4. ⚡ Performance Improvements — 2 PRs

Representative PR: #18444 — [Improvement-18443][API&DAO] Optimize WorkflowInstanceMapper to exclude large text fields from list queries (#18444)

  • Author: @njnu-seafish
  • Change size: +790 / -268 lines
  • PRs in this category this month: 2

Why it matters: Workflow-instance and task-instance list queries no longer fetch large TEXT fields such as global_params and process_instance_json unnecessarily. This can significantly improve list-page response times, database I/O, and memory usage, with particularly noticeable benefits in large-scale deployments.

Key scenarios to verify:

  • ✅ Compare workflow-instance list-page response times before and after the optimization, especially with 1,000+ instances.
  • ✅ Open an individual workflow instance and verify that large fields such as global parameters are still displayed correctly. The detail API continues to retrieve them.
  • ✅ Verify that list-page export, search, and other functions continue to work as expected.

Full list of related PRs:

PR # Title Author Diff
#18444 [Improvement-18443][API&DAO] Optimize WorkflowInstanceMapper to exclude large text fields from list queries (#18444) @njnu-seafish +790/-268
#18442 [Improvement-18441][API&DAO] Optimize TaskInstanceMapper to exclude large text fields from list queries (#18442) @njnu-seafish +17/-5

5. 🔌 Task Types and New Data Sources — 1 PR

Representative PR: #18434 — [Fix-18389][DataX] Read job definition from attached resource file when custom json is empty (#18434)

  • Author: @nikhiln64
  • Change size: +344 / -8 lines
  • PRs in this category this month: 1

Why it matters: Previously, DataX users had to paste JSON content into the custom JSON field in the UI and could not reuse files from the Resource Center. The new behavior allows DolphinScheduler to automatically read the job definition from a resource file when the custom JSON field is empty, bringing the experience in line with how SQL tasks load SQL from resource files.

6. 🧹 API Cleanup and Engineering Improvements — 5 PRs

Representative PR: #18569 — [Improvement-18568][API] Remove obsolete task update-with-upstream API (#18569)

  • Author: @ruanwenjun
  • Change size: +2 / -507 lines
  • PRs in this category this month: 5

Why it matters: This month, the community removed three groups of obsolete APIs covering cluster query-by-code, task update-with-upstream, and dynamic sub-workflow functionality, while also updating incompatible.md.

For users upgrading from an earlier version, this is an important area to review. If your organization has a custom frontend or automation scripts that rely on any of these legacy APIs, make sure to update them before upgrading.

Full list of related PRs:

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

7. ☸️ K8s and Cloud-Native Deployment — 1 PR

Representative PR: #18574 — [Fix-17883] Fix K8s Alert HTTP test sending failed by using IP for non-StatefulSet pods (#17883) (#18574)

  • Author: @zhang-arvin
  • Change size: +10 / -3 lines
  • PRs in this category this month: 1

Why it matters: For non-StatefulSet Pods in K8s, such as Pods managed by a Deployment, HTTP alert-instance testing could previously fail because the endpoint was resolved using the hostname. The fix switches to IP-based addressing, improving the reliability of alert channels in K8s deployments.

8. 📚 Documentation and Example Improvements — 2 PRs

Representative PR: #18478 — [Doc-18474][Upgrade] Fix zh/en incompatible upgrade docs out of sync (#18478)

  • Author: @njnu-seafish
  • Change size: +11 / -15 lines
  • PRs in this category this month: 2

Why it matters: Broken links in the datasource and configuration documentation were fixed, while the Chinese and English upgrade-incompatibility documentation was brought back into alignment. These updates help reduce confusion and prevent issues caused by outdated or inconsistent documentation.

Full list of related PRs:

PR # Title Author Diff
#18478 [Doc-18474][Upgrade] 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

⚠️ Upgrade and Validation Recommendations

Risk Assessment

Overall Risk Level: 🟠 Medium-High

Risk Area Assessment Details
Core Module Changes ⚠️ Yes The API module was touched by 15/23 PRs; permission-related APIs require particular attention during regression testing
Number of Bug Fixes 9 A relatively high number of bug fixes; pay close attention to task retry and failure-recovery scenarios
Permission/Security Changes 7 ⚠️ Significant changes to the permission model require comprehensive authorization testing
K8s/Deployment Changes 1 ⚠️ Deployment-related logic was changed; Helm/Docker deployments should be verified
UI Changes Yes ⚠️ Frontend changes require smoke testing of key pages
Database Schema ⚠️ Yes DSIP-18464 adds new DDL; verify that the upgrade script is executed correctly

Before You Upgrade

  1. 📦 Back up the database: Before upgrading, create a full backup of the DolphinScheduler metadata database using mysqldump or pg_dump.

  2. 📋 Check the DDL scripts: Verify that the new scripts under dolphinscheduler-dao/src/main/resources/sql/upgrade/3.5.0_schema/ are included in the upgrade process.

  3. 📝 Review incompatible changes: Pay particular attention to the four groups of API removals marked this month in docs/docs/en/guide/upgrade/incompatible.md.

  4. 🧪 Check custom integrations: If you use OpenAPI, search your codebase to make sure none of these three removed APIs are still being called:

  • cluster/query-by-code (PR #18584)
  • task/update-with-upstream (PR #18569)
  • Dynamic sub-workflow APIs (PR #18557)
  1. 💾 Back up configuration files: Back up all configuration files under the conf/ directory.

Common Issues and Quick Checks

Symptom Possible Cause What to Check
A sudden 403 when saving a workflow PR #18561 introduced stricter permission checks Verify that the current user has write permission for the target project and that the upstream workflow referenced by the sub-workflow is also within the user's authorized scope
A sub-workflow cannot be referenced PR #18597 added cross-project permission checks Confirm that the user has the required permissions for the project containing the sub-workflow
Binding a datasource returns 403 PR #18566 added datasource authorization checks Grant the user access to the corresponding datasource under Datasource Authorization
HTTP alert testing fails in a K8s deployment Logic changed by PR #18574 Check Pod network policies and verify in the logs whether the connection is being made using a hostname or an IP address
Missed-fire behavior is not what you expected after upgrading DSIP-18464 defaults to the Skip policy Check the value of missed_fire_policy; switch the policy manually if missed runs need to be executed
Task retries trigger immediately instead of respecting the interval PR #18539 changed the calculation to use endTime Verify that retry time is calculated as task end time + retryInterval, rather than start time
Workflow-instance lists load slowly or return errors after upgrading VO fields no longer match after large-field exclusions Check whether the frontend version was upgraded at the same time, or roll back temporarily to isolate the changes from #18444/#18442

🙏 Thank You to Our Contributors

A huge thank-you to the 10 contributors who contributed code to Apache DolphinScheduler in August 2026:

@ruanwenjun, @njnu-seafish, @SEPURI-SAI-KRISHNA, @kittimzhe, @nikhiln64, @hellodml, @zhang-arvin, @liang-wenjie, @hiSandog, and @SbloodyS

Every PR helps DolphinScheduler continue to evolve in stability, usability, and ecosystem growth. 💪

Top comments (0)