)]}'
{
  "log": [
    {
      "commit": "9cea76be29f059752013432f33d8e5c6ae9286a7",
      "tree": "32ad690c904f7f5ef1e4e2e45fd9c5b7581d994b",
      "parents": [
        "adb0c7d95132cf6126ba834bb1437ca37d7713e5"
      ],
      "author": {
        "name": "Yanjun Qiu",
        "email": "153984347+qiuyanjun888@users.noreply.github.com",
        "time": "Fri Jun 12 17:08:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 17:08:43 2026 +0800"
      },
      "message": "[Improvement-17563][Helm] Update mysql helm chart version (#18336)"
    },
    {
      "commit": "adb0c7d95132cf6126ba834bb1437ca37d7713e5",
      "tree": "b1139126c040d875e63718bf1cf3155120136f6d",
      "parents": [
        "18ea0cf1093871c8778a791f60fb8d25b7b1bde5"
      ],
      "author": {
        "name": "njnu-seafish",
        "email": "su_yichao@sina.com",
        "time": "Fri Jun 12 10:43:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 10:43:27 2026 +0800"
      },
      "message": "[Improvement-18332][Worker] Remove plaintext passwords from the logs (#18333)"
    },
    {
      "commit": "18ea0cf1093871c8778a791f60fb8d25b7b1bde5",
      "tree": "18ad1a0c3e350f00fcded0a2a3ffe18bdab2c776",
      "parents": [
        "386fc0ace2955bfcf0151729a484496e1bdd93e6"
      ],
      "author": {
        "name": "Victor Laborie",
        "email": "vlaborie@leni.tech",
        "time": "Fri Jun 12 04:08:01 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 10:08:01 2026 +0800"
      },
      "message": "[Fix-18340][Helm] Fix duplicate app.kubernetes.io/name label on ConfigMap (#18341)"
    },
    {
      "commit": "386fc0ace2955bfcf0151729a484496e1bdd93e6",
      "tree": "e2ede40b5573461918e602b914a531e9c5aead13",
      "parents": [
        "c9e373e30bda27f1d3fa6d0273264f03c2f2ccb6"
      ],
      "author": {
        "name": "eye-gu",
        "email": "734164350@qq.com",
        "time": "Wed Jun 10 20:28:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 20:28:15 2026 +0800"
      },
      "message": "[Fix-18330] Replace HashMap with ConcurrentHashMap in UserGroupInformationFactory to avoid ConcurrentModificationException (#18331)"
    },
    {
      "commit": "c9e373e30bda27f1d3fa6d0273264f03c2f2ccb6",
      "tree": "9564a21c107c54fc9a637920880fbcc0a9559913",
      "parents": [
        "9a86abea47ec5b94f7107bc35931f0d676004621"
      ],
      "author": {
        "name": "luxiaolong",
        "email": "lindaluo83@126.com",
        "time": "Sun Jun 07 12:20:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 07 12:20:37 2026 +0800"
      },
      "message": "[Fix-18304][API] Remove dead code after t_ds_relation_user_alertgroup table dropped (#18316)"
    },
    {
      "commit": "9a86abea47ec5b94f7107bc35931f0d676004621",
      "tree": "e4f7d1441513353aef9116f4777d4711e85b7186",
      "parents": [
        "63b837b032196b69e6474007d2876e8359a17a0a"
      ],
      "author": {
        "name": "njnu-seafish",
        "email": "su_yichao@sina.com",
        "time": "Fri Jun 05 18:17:24 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 18:17:24 2026 +0800"
      },
      "message": "[Doc-18322][Parameter] Add a note to the parameter priority documentation specifying and fix some issues (#18323)"
    },
    {
      "commit": "63b837b032196b69e6474007d2876e8359a17a0a",
      "tree": "ee51f6d793bfb92b83bb70643883246cf2d9bddf",
      "parents": [
        "123df9ffa46201e3b21a23bd2527b3b170bdac12"
      ],
      "author": {
        "name": "njnu-seafish",
        "email": "su_yichao@sina.com",
        "time": "Fri Jun 05 15:10:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 15:10:47 2026 +0800"
      },
      "message": "[Improvement-18040] [Doc] Update the parameter priority explanation in the docs. (#18321)"
    },
    {
      "commit": "123df9ffa46201e3b21a23bd2527b3b170bdac12",
      "tree": "1a236d2554065042b36dc16b7395a483da056e2e",
      "parents": [
        "7b336490c6c8b37fb533417786fa8e619f04ed88"
      ],
      "author": {
        "name": "xiangzihao",
        "email": "460888207@qq.com",
        "time": "Thu Jun 04 16:35:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 16:35:02 2026 +0800"
      },
      "message": "[Chore] Hotfix 3.4.2 doc error (#18319)"
    },
    {
      "commit": "7b336490c6c8b37fb533417786fa8e619f04ed88",
      "tree": "082f07fb6654a6b1981d289c1fb5ae5034724148",
      "parents": [
        "f5dff77571aa7b8c4d9d847a8377c413e6e29c4c"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Thu Jun 04 09:27:12 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 09:27:12 2026 +0800"
      },
      "message": "[Chore] Release 3.4.2 (#18317)"
    },
    {
      "commit": "f5dff77571aa7b8c4d9d847a8377c413e6e29c4c",
      "tree": "bd5fabbd8a4cd195e4f95d464674167825ed11b0",
      "parents": [
        "eed37a9fa3c37f2f5823d56bbc3f5b95995fd1e7"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Tue Jun 02 05:50:37 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 11:50:37 2026 +0800"
      },
      "message": "[Chore] Add AGENTS.md + SECURITY.md to make the security model discoverable (#18310)"
    },
    {
      "commit": "eed37a9fa3c37f2f5823d56bbc3f5b95995fd1e7",
      "tree": "4abb49250413115f78177344d2735d886f9927d7",
      "parents": [
        "25c6a879991a69a29dc2148f276fa0a902252e57"
      ],
      "author": {
        "name": "陈家名",
        "email": "chenjiaming@kezaihui.com",
        "time": "Thu May 28 21:01:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 21:01:11 2026 +0800"
      },
      "message": "[Fix-18302][Common] Fix SQL license header parsing (#18301)"
    },
    {
      "commit": "25c6a879991a69a29dc2148f276fa0a902252e57",
      "tree": "1470a0a9f69b287af78e34344d7c33204659217b",
      "parents": [
        "e973efad927d38d1a3b7f10a65bb97d39a3474e1"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Thu May 28 14:32:57 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 14:32:57 2026 +0800"
      },
      "message": "[Fix-18299][API] Enforce access token owner checks (#18300)"
    },
    {
      "commit": "e973efad927d38d1a3b7f10a65bb97d39a3474e1",
      "tree": "920f1c7cf43b0273e30cb94b9c3943e666a7a4fc",
      "parents": [
        "8cd7aec07cc63657866c3e6929be237b56eb9937"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Tue May 26 18:50:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 18:50:09 2026 +0800"
      },
      "message": "[Fix-18292][Registry] Carry deleted node value in JDBC registry REMOVE event (#18296)\n\nThe JDBC registry built REMOVE events without eventData, so downstream\nlisteners (AbstractClusterSubscribeListener / AbstractHAServer) parsed a\nnull heartbeat, logged \"Unknown cluster change event\" and dropped the\nevent, leaving stale master/slot state in memory after ephemeral nodes\nwere purged.\n\nThread the deleted node value through onJdbcRegistryDataDeleted so the\nREMOVE event carries it as eventData, matching the ZooKeeper and Etcd\nregistries."
    },
    {
      "commit": "8cd7aec07cc63657866c3e6929be237b56eb9937",
      "tree": "c477095c48aee594745620a0f7c531693777346a",
      "parents": [
        "2cb705aef9b1d5c94f9618d2ebe97f2ca59014e5"
      ],
      "author": {
        "name": "Molin Wang",
        "email": "wcmolin@gmail.com",
        "time": "Tue May 26 11:30:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 11:30:42 2026 +0800"
      },
      "message": "[Improvement-18267][Remote Logging] Allow custom S3 region with endpoint (#18268)\n\nCo-authored-by: xiangzihao \u003c460888207@qq.com\u003e"
    },
    {
      "commit": "2cb705aef9b1d5c94f9618d2ebe97f2ca59014e5",
      "tree": "a42837ac7136bb04d906c2f56cdd6e7b8aadf1d6",
      "parents": [
        "3f90d20db0d2b057857bc70b91451a73c79cbe43"
      ],
      "author": {
        "name": "陈家名",
        "email": "chenjiaming@kezaihui.com",
        "time": "Sun May 24 10:14:35 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 24 10:14:35 2026 +0800"
      },
      "message": "[Doc] Fix English FAQ answer formatting (#18288)\n\nCo-authored-by: xiangzihao \u003c460888207@qq.com\u003e"
    },
    {
      "commit": "3f90d20db0d2b057857bc70b91451a73c79cbe43",
      "tree": "28281446252e2b2e502de045f1f37ae5b3647225",
      "parents": [
        "a08de7bb4feecf625735d87d8e57d70591061ec1"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Sun May 24 10:10:05 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 24 10:10:05 2026 +0800"
      },
      "message": "[Fix-18283][API] Add project permission check on workflow lineage and workflow-definition list endpoints (#18284)"
    },
    {
      "commit": "a08de7bb4feecf625735d87d8e57d70591061ec1",
      "tree": "b0bd5cb5ccc17ea043a3d3925151a67653b12332",
      "parents": [
        "cd8abbaa626d1b7da229fc6883cbb80b687428d6"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Fri May 22 09:40:51 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 09:40:51 2026 +0800"
      },
      "message": "[Fix-18276][API] Fix alert plugin instance permission check (#18279)"
    },
    {
      "commit": "cd8abbaa626d1b7da229fc6883cbb80b687428d6",
      "tree": "5dbdd7b1a081e8b82d426927645412f0d25ec794",
      "parents": [
        "8a3edb93d5ce590f7bb143978d0253750bb52e13"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Wed May 20 11:42:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 11:42:13 2026 +0800"
      },
      "message": "[Improvement-18249][DAO] Route TaskDefinitionMapper access through TaskDefinitionDao (#18254)"
    },
    {
      "commit": "8a3edb93d5ce590f7bb143978d0253750bb52e13",
      "tree": "739500f0f55e5cd2c478ebef50535cb0ceefa4f0",
      "parents": [
        "adf2068c93b3da7a105d19a7cf824174ab2dc9bd"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Wed May 20 09:51:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 09:51:52 2026 +0800"
      },
      "message": "[Improvement-18249][DAO] Route AlertGroupMapper and AccessTokenMapper access through repository Dao (#18261)"
    },
    {
      "commit": "adf2068c93b3da7a105d19a7cf824174ab2dc9bd",
      "tree": "f51f0790d05a5fdbd079a83745aa5bc378d9a4de",
      "parents": [
        "376d2149ce0e423866a26261fe4c8305d36707bc"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Tue May 19 11:48:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 19 11:48:00 2026 +0800"
      },
      "message": "[Improvement-18249][DAO] Route ProjectUserMapper access through ProjectUserDao (#18262)"
    },
    {
      "commit": "376d2149ce0e423866a26261fe4c8305d36707bc",
      "tree": "35141d4b9c7110b82f2b90a7f61b8e903754ed31",
      "parents": [
        "49773e580a7b40b3aa689e8e156746ebc27e124e"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Tue May 19 11:10:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 19 11:10:52 2026 +0800"
      },
      "message": "[Improvement-18249][DAO] Route QueueMapper access through QueueDao (#18263)"
    },
    {
      "commit": "49773e580a7b40b3aa689e8e156746ebc27e124e",
      "tree": "2081b7cb0b683701536cf555f9640eaa3f75e5a6",
      "parents": [
        "6af38d0d9bf6e1c10f6b5c987e69d85961056c2f"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Tue May 19 10:15:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 19 10:15:00 2026 +0800"
      },
      "message": "[Improvement-18249][DAO] Route WorkflowInstanceMapper access through WorkflowInstanceDao (#18256)"
    },
    {
      "commit": "6af38d0d9bf6e1c10f6b5c987e69d85961056c2f",
      "tree": "3a459f8ab2dd0baa4afe5e9be84c555a4ff3d7b5",
      "parents": [
        "673b3615824c7e01d7435163e72509706b2e1605"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Mon May 18 21:47:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 21:47:40 2026 +0800"
      },
      "message": "[Improvement-18249][DAO] Route DataSourceMapper and DataSourceUserMapper access through repository Dao (#18259)"
    },
    {
      "commit": "673b3615824c7e01d7435163e72509706b2e1605",
      "tree": "058ebb183a82747f0d205e443d5b809cc5f65751",
      "parents": [
        "f954412defc81a57d6b3a9514222785a38e292ec"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Sun May 17 22:28:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 17 22:28:02 2026 +0800"
      },
      "message": "[Improvement-18249][DAO] Route WorkflowTaskRelationMapper access through WorkflowTaskRelationDao (#18260)"
    },
    {
      "commit": "f954412defc81a57d6b3a9514222785a38e292ec",
      "tree": "d02790fbc4d2b595033ec739b7e59dbcbdb61128",
      "parents": [
        "074c41c87a4dd478ef16e7c1489bfc49a2327445"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Sun May 17 19:47:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 17 19:47:01 2026 +0800"
      },
      "message": "[Improvement-18249][DAO] Route UserMapper access through UserDao (#18253)"
    },
    {
      "commit": "074c41c87a4dd478ef16e7c1489bfc49a2327445",
      "tree": "2bb870c6dbcb5b5664b7c358113a92d2d0fff8d9",
      "parents": [
        "27784c62e7b45def6d5c1ca0cda65d4a6426b244"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Sat May 16 12:04:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 16 12:04:40 2026 +0800"
      },
      "message": "[Improvement-18249][DAO] Route TenantMapper access through TenantDao (#18258)"
    },
    {
      "commit": "27784c62e7b45def6d5c1ca0cda65d4a6426b244",
      "tree": "e1881ee16ba2a19da67a3d59151dc5a7d14dc116",
      "parents": [
        "9d3c0085fb2927d30dc37c5ddcbc222135b0cb93"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Fri May 15 17:48:57 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 15 17:48:57 2026 +0800"
      },
      "message": "[Chore][Docs] Add AGENT.md (#18271)\n\nCo-authored-by: xiangzihao \u003c460888207@qq.com\u003e"
    },
    {
      "commit": "9d3c0085fb2927d30dc37c5ddcbc222135b0cb93",
      "tree": "800c9a5d590fe567afb2f8ebd91fcda7163bf7ff",
      "parents": [
        "5c5dd9014544538211acdd0d25f63c65f2b52ae9"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Fri May 15 15:25:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 15 15:25:21 2026 +0800"
      },
      "message": "[Fix-18269][Master] Move LogicFakeTask to test scope (#18270)"
    },
    {
      "commit": "5c5dd9014544538211acdd0d25f63c65f2b52ae9",
      "tree": "3b82932d5c54839b44294925c5bd216265937b4c",
      "parents": [
        "4f42022ac78cbf7436ddb771fad5a931a4441b2e"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Fri May 15 12:25:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 15 12:25:00 2026 +0800"
      },
      "message": "[Improvement-18249][DAO] Route ClusterMapper and K8sNamespaceMapper access through repository Dao (#18257)"
    },
    {
      "commit": "4f42022ac78cbf7436ddb771fad5a931a4441b2e",
      "tree": "abe4293c31d87ea92bbd15c64bc393ca05b21453",
      "parents": [
        "daea87bca989c6c10cb128c96fb9403b816c773d"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Fri May 15 11:37:14 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 15 11:37:14 2026 +0800"
      },
      "message": "[Improvement-18249][DAO] Route TaskInstanceMapper access through TaskInstanceDao (#18252)"
    },
    {
      "commit": "daea87bca989c6c10cb128c96fb9403b816c773d",
      "tree": "f6c7ce5f3ae3f5490ede1b7bebb270c186c69163",
      "parents": [
        "f428e3d162ebcb53c9cbd8ec011f0282a0ab964e"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Fri May 15 09:32:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 15 09:32:43 2026 +0800"
      },
      "message": "[Improvement-18249][DAO] Route ScheduleMapper access through ScheduleDao (#18251)"
    },
    {
      "commit": "f428e3d162ebcb53c9cbd8ec011f0282a0ab964e",
      "tree": "065f6aeab80d3f66ccbaf343ea3b098dd9ff64b7",
      "parents": [
        "3ec74298922b9ffa25f274438e4b674e394465f8"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Wed May 13 13:56:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 13 13:56:06 2026 +0800"
      },
      "message": "[Improvement-18249][DAO] Route ProjectMapper and WorkflowDefinitionMapper access through repository Dao (#18250)"
    },
    {
      "commit": "3ec74298922b9ffa25f274438e4b674e394465f8",
      "tree": "087bd5d66dc4e08730c5093b9c3e7b07da11fa7e",
      "parents": [
        "6fde27b162ac600e066308331d9768808ed5ebc4"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Tue May 12 11:44:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 11:44:02 2026 +0800"
      },
      "message": "[Improvement-18224][API] Migrate ProjectService Map\u003cString,Object\u003e returns to typed returns (#18245)"
    },
    {
      "commit": "6fde27b162ac600e066308331d9768808ed5ebc4",
      "tree": "e3adb96dac65d4e6288d02627ef1ab922f6b953e",
      "parents": [
        "0524fa77bb4848a2cb80d9a2828a4b8becc6b87f"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Mon May 11 14:14:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 14:14:37 2026 +0800"
      },
      "message": "[Improvement-18224][API] Migrate TaskGroupService and ExecutorService.forceStartTaskInstance to typed returns (#18233)\n\nCo-authored-by: xiangzihao \u003c460888207@qq.com\u003e"
    },
    {
      "commit": "0524fa77bb4848a2cb80d9a2828a4b8becc6b87f",
      "tree": "2455b6378a3008b177afa008609e69e5d4607211",
      "parents": [
        "ac9741bf03bc7f61356f689c00434dfe42aadb36"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Mon May 11 11:54:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 11:54:27 2026 +0800"
      },
      "message": "[Improvement-18224][API] Migrate WorkflowDefinitionService Map\u003cString,Object\u003e returns to typed returns (#18236)"
    },
    {
      "commit": "ac9741bf03bc7f61356f689c00434dfe42aadb36",
      "tree": "58207bca76e51cee2c491a373804679b8c8faf24",
      "parents": [
        "b589e4fef759309f38746015d218d15823f610f0"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Mon May 11 09:07:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 09:07:19 2026 +0800"
      },
      "message": "[Chore][Docs] Refresh commit message convention to match current practice (#18242)"
    },
    {
      "commit": "b589e4fef759309f38746015d218d15823f610f0",
      "tree": "d7391c9e005e165614af3063a0361d01f278dbb2",
      "parents": [
        "1149e9aaa39aab079d1669b9006471f2cf45c2ac"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Sun May 10 22:18:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 22:18:31 2026 +0800"
      },
      "message": "[Improvement-18224][API] Migrate UsersService Map\u003cString,Object\u003e returns to typed returns (#18234)\n\nRefactor 17 UsersService methods that returned Map\u003cString, Object\u003e to\ntyped returns / void with ServiceException, mirroring the pattern\nestablished by EnvironmentService.\n\nMethods migrated:\n- createUser(8 args) -\u003e User\n- deleteUserById -\u003e void\n- grantProject / grantProjectWithReadPerm / grantProjectByCode -\u003e void\n- revokeProject / revokeProjectById -\u003e void\n- grantNamespaces / grantDataSource -\u003e void\n- getUserInfo -\u003e User (tenantCode / alertGroup / timeZone populated, password stripped)\n- queryAllGeneralUsers / queryUserList(User) -\u003e List\u003cUser\u003e\n- unauthorizedUser / authorizedUser -\u003e List\u003cUser\u003e\n- registerUser / activateUser -\u003e User\n- batchActivateUser -\u003e Map\u003cString, Object\u003e (kept Map; nested success/failed\n  buckets keep wire field names byte-for-byte)\n\nbatchActivateUser switches its inner loop to a try/catch around\nactivateUser since activateUser now throws ServiceException; the wire\nshape (success.{sum, userName} / failed.{sum, info}) is unchanged.\n\nUsersController forwards typed values via Result.success and the\nauthorizedUser endpoint drops its bespoke try/catch since\nApiException + ApiExceptionHandler now provide the equivalent fallback.\n\nPythonGateway.deleteUser already discarded the return value, so the\nvoid return causes no Py4J impact. The other Py4J / SSO callers all\nuse the already-typed createUser overloads.\n\nFull module test suite: 682 tests, 0 failures."
    },
    {
      "commit": "1149e9aaa39aab079d1669b9006471f2cf45c2ac",
      "tree": "06d9e71f520fc4bc2af69083685eee376e21dd17",
      "parents": [
        "a5cddc8ffceaefefa92cbf9de8048654a86eabe3"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Sun May 10 21:07:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 21:07:11 2026 +0800"
      },
      "message": "[Improvement-18224][API] Migrate small-service Map\u003cString,Object\u003e returns to typed returns (#18230)\n\nBatch-migrate seven Map\u003cString, Object\u003e methods across five small services\nto typed return / void + ServiceException, with cascading updates to the\ncontrollers, PythonGateway and unit tests:\n\nTenantService\n- queryByTenantCode(String): Tenant (nullable; only consumed by PythonGateway)\n\nTaskGroupQueueService\n- queryTasksByGroupId(...): PageInfo\u003cTaskGroupQueue\u003e\n\nProjectWorkerGroupRelationService\n- queryAssignedWorkerGroupsByProject(User, Long): List\u003cProjectWorkerGroup\u003e\n\nUiPluginService\n- queryUiPluginsByType(PluginType): List\u003cPluginDefine\u003e\n- queryUiPluginDetailById(int): PluginDefine\n\nEnvironmentWorkerGroupRelationService\n- queryEnvironmentWorkerGroupRelation(Long): List\u003cEnvironmentWorkerGroupRelation\u003e\n- queryAllEnvironmentWorkerGroupRelationList(): List\u003cEnvironmentWorkerGroupRelation\u003e\n\nHTTP wire format is preserved:\n* Standard endpoints (TaskGroup, UiPlugin) now wrap the typed return in\n  Result.success(data); ApiExceptionHandler converts ServiceException to\n  the same Result(code, msg) shape that BaseController.returnDataList(map)\n  produced.\n* The non-standard ProjectWorkerGroupController.queryAssignedWorkerGroups\n  endpoint still returns a raw Map\u003cString, Object\u003e; the controller now\n  builds the {STATUS, MSG, DATA_LIST} map from the typed service return so\n  the JSON body remains byte-for-byte identical on success. Permission\n  failures translate the legacy hasProjectAndPerm(Map) status into a\n  ServiceException, so the error path now goes through ApiExceptionHandler\n  (Result shape) instead of the raw Map.\n\nPy4J boundary is preserved: PythonGateway.queryTenantByCode now returns\nthe Tenant directly from the service (still null on miss, matching the\nprevious behavior where DATA_LIST was unset).\n\nExecutorService.forceStartTaskInstance is intentionally deferred — its\nonly caller is TaskGroupServiceImpl.forceStartTask, which itself returns\nMap\u003cString, Object\u003e and is part of the larger TaskGroupService migration.\nMigrating it now would require a temporary Map-rebuild in TaskGroupServiceImpl\nthat the next PR would immediately undo.\n\nPart of the migration series tracked by #18224."
    },
    {
      "commit": "a5cddc8ffceaefefa92cbf9de8048654a86eabe3",
      "tree": "b8fa547019897e95ca62202e18e075b29058aad3",
      "parents": [
        "b9153fbd60878e7c8ac22477d55c45bfb71ed8f9"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Sun May 10 20:12:17 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 20:12:17 2026 +0800"
      },
      "message": "[Fix-18222][JdbcRegistry] Reuse a singleton scheduler executor in JdbcRegistryThreadFactory (#18223)\n\n* [Fix-18222][JdbcRegistry] Reuse a singleton scheduler executor in JdbcRegistryThreadFactory\n\nJdbcRegistryThreadFactory#getDefaultSchedulerThreadExecutor returned a\nfreshly created ScheduledExecutorService on every call, so the four\nscheduleWithFixedDelay sites in JdbcRegistryServer#start and\nJdbcRegistryDataManager#start each ran on their own pool, while the\nshutdown/shutdownNow calls in JdbcRegistry#close and\nJdbcRegistryServer#close closed yet another empty pool instead of the\nrunning ones. Daemon threads kept this from leaking on JVM exit, but the\nlogic was inconsistent and the process held 4x the configured scheduled\nthreads.\n\nCache the executor as a lazy singleton (double-checked locking with\nvolatile) so all callers share one pool and the close calls land on the\nactually-running pool.\n\n* [Fix-18222][JdbcRegistry] Bind scheduler executor to JdbcRegistryServer instance\n\nThe JdbcRegistryThreadFactory class held a JVM-global singleton\nscheduled executor. Multiple JdbcRegistryServer instances (tests,\nembedded StandaloneServer) shared the same pool, blurring lifecycle\nownership and forcing JdbcRegistry#close() to shutdownNow() on a pool\nthat other instances might still be using.\n\nMove the executor onto JdbcRegistryServer as an instance field, inject\nit into JdbcRegistryDataManager via the constructor, and shut it down\nin JdbcRegistryServer#close(). The state-guard at the top of the\nperiodic tasks short-circuits any task that observes STOPPED, so a\ngraceful shutdown() — combined with daemon threads — is enough to stop\nthe JVM stalling.\n\nDelete the now-unused JdbcRegistryThreadFactory class and its test;\nthe test only covered JDK ScheduledExecutorService basics and the\nstatic singleton identity that no longer exists."
    },
    {
      "commit": "b9153fbd60878e7c8ac22477d55c45bfb71ed8f9",
      "tree": "a2567377c9850a0cb72c57441b86b18f7e374d86",
      "parents": [
        "f5accbcddae9fec64c5b43e3df0dcca42af352e7"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Sun May 10 19:40:32 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 19:40:32 2026 +0800"
      },
      "message": "[Improvement-18224][API] Migrate WorkflowInstanceService Map\u003cString,Object\u003e returns to typed returns (#18232)\n\nMigrate 9 service methods from Map\u003cString,Object\u003e returns to typed returns\nor void with ServiceException, following the EnvironmentService pattern.\n\nMethods migrated:\n- queryTopNLongestRunningWorkflowInstance -\u003e List\u003cWorkflowInstance\u003e\n- queryWorkflowInstanceById -\u003e WorkflowInstance\n- queryTaskListByWorkflowInstanceId -\u003e WorkflowInstanceTaskListDTO (new)\n- querySubWorkflowInstanceByTaskId -\u003e Map\u003cString,Integer\u003e (single-key)\n- updateWorkflowInstance -\u003e WorkflowDefinition\n- queryParentInstanceBySubId -\u003e Map\u003cString,Integer\u003e (single-key)\n- viewVariables -\u003e WorkflowInstanceVariablesDTO (new)\n- viewGantt -\u003e GanttDto\n- queryByTriggerCode -\u003e List\u003cWorkflowInstance\u003e\n\nTwo new DTOs encapsulate the multi-field payloads:\n- WorkflowInstanceTaskListDTO (workflowInstanceState + taskList)\n- WorkflowInstanceVariablesDTO (globalParams + localParams)\n\nThe single-field nested-id payloads (subWorkflowInstanceId,\nparentWorkflowInstance) keep their wire shape via Map\u003cString,Integer\u003e.\n\nError paths uniformly throw ServiceException; the HTTP wire format is\npreserved by ApiExceptionHandler converting the exception to the same\nResult(code, msg) shape that putMsg produced.\n\nWorkflowInstanceController forwards typed values through Result.success;\nbatchDeleteWorkflowInstanceByIds uses Result.errorWithArgs for the\ndeleteFailed branch.\n\nWorkflowInstanceService and WorkflowInstanceController have no\nPythonGateway / cross-service callers, so the migration is fully\ncontained within these files plus the two test updates."
    },
    {
      "commit": "f5accbcddae9fec64c5b43e3df0dcca42af352e7",
      "tree": "cfaef9b5a211e852f129a90ed1e764497f80123c",
      "parents": [
        "8ff3558f1c15b7dd7ba76b26a669333f6da775ef"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Sun May 10 18:59:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 18:59:26 2026 +0800"
      },
      "message": "[Improvement-18224][API] Migrate TaskDefinitionService Map\u003cString,Object\u003e returns to typed returns (#18229)\n\nRefactor 7 TaskDefinitionService methods from Map\u003cString, Object\u003e to typed\nreturn / void + ServiceException, with cascading updates to controller,\nPythonGateway and unit test:\n\n- queryTaskDefinitionByName(...): TaskDefinition\n- updateTaskWithUpstream(...): Long (the updated task code)\n- switchVersion(...): void\n- deleteByCodeAndVersion(...): void\n- queryTaskDefinitionDetail(...): TaskDefinitionVO\n- genTaskCodeList(Integer): List\u003cLong\u003e\n- releaseTaskDefinition(...): void\n\nThe private updateTask helper now throws ServiceException for every error\npath; it still returns null for the \"task body unchanged\" case so the\npublic method can short-circuit when both the body and upstream relations\nare unchanged. As a side effect this fixes a latent bug in\nupdateTaskWithUpstream where any error from the helper was silently\noverridden with SUCCESS whenever the new and existing upstream code sets\nhappened to match (e.g. TASK_DEFINE_NOT_EXIST returned 200 OK). No test\ncovered that edge case.\n\nA small private helper requireProjectAndWritePerm replaces the inline\nhasProjectAndWritePerm(Map) call sites; ProjectService remains untouched\nand will be migrated last in the #18224 series.\n\nHTTP wire format is preserved: ApiExceptionHandler converts ServiceException\nto the same Result(code, msg) shape that BaseController.returnDataList(map)\nproduced; success paths use Result.success(data) matching the prior JSON\nbody byte-for-byte.\n\nPy4J boundary is preserved: PythonGateway.genTaskCodeList still returns\nMap\u003cString, Object\u003e with the same {STATUS, MSG, DATA_LIST} keys, now\nconstructed in the wrapper from the service\u0027s typed return.\n\nPart of the migration series tracked by #18224."
    },
    {
      "commit": "8ff3558f1c15b7dd7ba76b26a669333f6da775ef",
      "tree": "cd15032c7a0637124e4d06328fb84545d636babf",
      "parents": [
        "7e518396909e6a67ea2fb9cb3949c5ea10cfe32f"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Sun May 10 16:50:59 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 16:50:59 2026 +0800"
      },
      "message": "[Improvement-18224][API] Migrate WorkerGroupService Map\u003cString,Object\u003e returns to typed returns (#18228)"
    },
    {
      "commit": "7e518396909e6a67ea2fb9cb3949c5ea10cfe32f",
      "tree": "5a31130ed2f7cdbc797714e66b3641fc5b3971ab",
      "parents": [
        "86c6844014c063e74fea59bd52b915fffc06f113"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Sun May 10 13:30:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 13:30:42 2026 +0800"
      },
      "message": "[Improvement-18224][API] Migrate SchedulerService Map\u003cString,Object\u003e returns to typed returns (#18226)\n\nRefactor 5 SchedulerService methods from Map\u003cString, Object\u003e to typed\nreturn + ServiceException, with cascading updates to the controller,\ncontroller test and PythonGateway:\n\n- insertSchedule(...): Schedule\n- updateSchedule(...): Schedule\n- queryScheduleList(User, long): List\u003cScheduleVO\u003e\n- previewSchedule(User, String): List\u003cString\u003e\n- updateScheduleByWorkflowDefinitionCode(...): Schedule\n\nHTTP wire format is preserved: ApiExceptionHandler converts ServiceException\nto the same Result(code, msg) shape that BaseController.returnDataList(map)\nproduced; success paths use Result.success(data) matching the prior JSON\nbody byte-for-byte. The private updateSchedule helper now throws on\nvalidation failure and returns the persisted Schedule on success, replacing\nthe Map-mutation contract.\n\nPy4J boundary is preserved: PythonGateway.createOrUpdateSchedule reads the\nnew scheduleId via Schedule#getId() instead of result.get(\"scheduleId\"),\nso Python SDK clients see no behavior change.\n\nPart of the migration series tracked by #18224."
    },
    {
      "commit": "86c6844014c063e74fea59bd52b915fffc06f113",
      "tree": "3310de0a1276ddc85f9c2fa0f30f7c8256984a3c",
      "parents": [
        "835c49529035e83b32cec1caa4b7769cf08bb25d"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Sun May 10 12:38:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 12:38:31 2026 +0800"
      },
      "message": "[Chore][Master] Quietly exit WorkerGroupDispatcher loop on interrupt (#18240)\n\nWorkerGroupDispatcher#run consumed TaskDispatchableEventBus#take() which\nwas annotated with @SneakyThrows, so an InterruptedException raised when\nthe master shuts down (the dispatch thread is parked on the queue) was\nrethrown as a RuntimeException and surfaced with a full stack trace —\nalarming \"thread died\" noise during a perfectly graceful shutdown.\n\nDrop @SneakyThrows from take() so it declares InterruptedException, and\nlet the dispatch loop catch it: re-set the interrupt flag, log a single\ninfo line, and return so the daemon thread exits cleanly.\n\nAlso clamp the dispatch-retry waiting time to \u003e\u003d 1s so a freshly-counted\nfailure does not immediately re-enqueue the task against the same\nunhealthy worker group.\n\nIn addition, document how to run dolphinscheduler-master tests in the\nmodule\u0027s CLAUDE.md: no Docker required, watch out for stale JaCoCo\nclasses, surefire forks 4 JVMs in parallel, and the trailing\n\"kill self fork JVM ... 30 seconds after System.exit(0)\" line is a\nharmless warning."
    },
    {
      "commit": "835c49529035e83b32cec1caa4b7769cf08bb25d",
      "tree": "653ab8c3e39b8e4c8a28e5a7aca97bc64582b7f4",
      "parents": [
        "713e53a9d4a4ee4ba0525bdca6451f8e5afa2802"
      ],
      "author": {
        "name": "yueqingshu",
        "email": "llphxdgg@gmail.com",
        "time": "Sun May 10 09:33:51 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 09:33:51 2026 +0800"
      },
      "message": "[Fix-18239] [Docs] Fix outdated Spark documentation links (#18241)\n\nCo-authored-by: xiangzihao \u003c460888207@qq.com\u003e"
    },
    {
      "commit": "713e53a9d4a4ee4ba0525bdca6451f8e5afa2802",
      "tree": "9c2fcee2d77f230cff317d1db91670f9f8a64f05",
      "parents": [
        "16044f72afc1c7e1518c8a331f9de82990e0a2b5"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Sun May 10 08:22:12 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 08:22:12 2026 +0800"
      },
      "message": "[Improvement-18224][API] Migrate K8sNamespaceService Map\u003cString,Object\u003e returns to typed returns (#18227)\n\nRefactor 4 K8sNamespaceService methods from Map\u003cString, Object\u003e to typed\nreturn / void + ServiceException, with cascading updates to the controller\nand unit test:\n\n- registerK8sNamespace(User, String, Long): K8sNamespace\n- deleteNamespaceById(User, int): void\n- queryUnauthorizedNamespace(User, Integer): List\u003cK8sNamespace\u003e\n- queryAuthorizedNamespace(User, Integer): List\u003cK8sNamespace\u003e\n\nHTTP wire format is preserved: ApiExceptionHandler converts ServiceException\nto the same Result(code, msg) shape that BaseController.returnDataList(map)\nproduced; success paths use Result.success(data) matching the prior JSON\nbody byte-for-byte.\n\nNo Py4J impact: K8sNamespaceService is not exposed via PythonGateway.\n\nPart of the migration series tracked by #18224."
    },
    {
      "commit": "16044f72afc1c7e1518c8a331f9de82990e0a2b5",
      "tree": "67d5563fd2edb301bdbc17065b145780cdf0920a",
      "parents": [
        "9c5808c34c5477e0e309fc4d4c362f2832c70544"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Sat May 09 15:16:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 09 15:16:10 2026 +0800"
      },
      "message": "[Improvement-18224][API] Migrate EnvironmentService Map\u003cString,Object\u003e returns to typed returns (#18225)"
    },
    {
      "commit": "9c5808c34c5477e0e309fc4d4c362f2832c70544",
      "tree": "054270d79c4bdc1e2d679af76b7c05063850a59d",
      "parents": [
        "fe368053c2358d5afaa46c5974a6eabf4bebcd30"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Thu May 07 22:03:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 22:03:16 2026 +0800"
      },
      "message": "[Chore][API] Remove deprecated ProjectService#checkProjectAndAuth (#18218)\n\nMigrate all internal callers to checkProjectAndAuthThrowException and drop\nthe two @Deprecated overloads (Map-returning and Result-mutating) along\nwith the unused private getCheckResult helper. Tests are updated to mock\nthe new throwing API via doThrow / doNothing and assert exceptions\ninstead of inspecting result-map status codes. Permission failures now\nflow through ApiExceptionHandler, preserving the wire format."
    },
    {
      "commit": "fe368053c2358d5afaa46c5974a6eabf4bebcd30",
      "tree": "4c41e5a9c1dbd236deb17167d0ccde2a65ea64bd",
      "parents": [
        "00550017032e9219c8b9900b1161093cc3949d88"
      ],
      "author": {
        "name": "xiangzihao",
        "email": "460888207@qq.com",
        "time": "Thu May 07 19:51:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 19:51:37 2026 +0800"
      },
      "message": "[Chore] Hotfix ut ci (#18221)"
    },
    {
      "commit": "00550017032e9219c8b9900b1161093cc3949d88",
      "tree": "8f50bebd843b47669b3ada7422bd3fb9806a6932",
      "parents": [
        "756f2f248b2297d5adec8f3c6eceffa092b9ef52"
      ],
      "author": {
        "name": "xiangzihao",
        "email": "460888207@qq.com",
        "time": "Wed May 06 13:49:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 13:49:06 2026 +0800"
      },
      "message": "[Chore] Unit-Test optimize (#18214)"
    },
    {
      "commit": "756f2f248b2297d5adec8f3c6eceffa092b9ef52",
      "tree": "309ebd1660c72ba479d7dab3bddf17b6d48a23a2",
      "parents": [
        "5f11cc2d28437f163f5a3a5f4909c22b21e8442c"
      ],
      "author": {
        "name": "leocook",
        "email": "leocook@163.com",
        "time": "Mon May 04 17:07:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 04 17:07:27 2026 +0800"
      },
      "message": "[Fix-18201][TaskPlugin] Fix RemoteShell task NullPointerException and… (#18210)"
    },
    {
      "commit": "5f11cc2d28437f163f5a3a5f4909c22b21e8442c",
      "tree": "a6929da5df0ef9d01f68191558a504355daa968c",
      "parents": [
        "7611941d97671173e326e9294810c4b96f52a24c"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Sun May 03 13:50:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 03 13:50:27 2026 +0800"
      },
      "message": "[Fix][API] Add missing project authorization on view-gantt/view-variables and trigger workflow APIs (#18212)\n\nThe view-gantt / view-variables endpoints on WorkflowInstanceController\nand the start-workflow-instance / batch-start-workflow-instance\nendpoints on ExecutorController did not verify that the login user had\npermission on the URL projectCode, allowing any authenticated user to\nread another project\u0027s workflow instance details or trigger another\nproject\u0027s online workflows.\n\n* WorkflowInstanceServiceImpl#viewVariables/viewGantt now require\n  loginUser and call projectService.checkProjectAndAuthThrowException\n  with WORKFLOW_INSTANCE before reading the instance.\n* WorkflowTriggerRequest / WorkflowBackFillRequest carry the URL\n  projectCode. ExecutorServiceImpl#triggerWorkflowDefinition /\n  backfillWorkflowDefinition gate the call with\n  checkProjectAndAuthThrowException(RERUN) and reject when the\n  resolved workflowDefinition does not belong to that projectCode.\n* ExecutorController and PythonGateway propagate projectCode into the\n  request builders. batchTriggerWorkflowDefinitions also accepts the\n  path variable so the inner per-code call inherits it.\n* Both ProjectService#checkProjectAndAuth overloads are marked\n  @Deprecated; new code should use checkProjectAndAuthThrowException.\n* New ExecutorServiceTest covers the unauthorized and cross-project\n  trigger/backfill paths; existing WorkflowInstance tests are updated\n  to the new viewVariables/viewGantt signatures."
    },
    {
      "commit": "7611941d97671173e326e9294810c4b96f52a24c",
      "tree": "2b1355ba493220eabaf7c6dac65d0d5bd7d2cc39",
      "parents": [
        "dd8857b84c65c663fd0a494f1a7828a69648eba5"
      ],
      "author": {
        "name": "includetts",
        "email": "117636492+includetts@users.noreply.github.com",
        "time": "Sun May 03 11:19:59 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 03 11:19:59 2026 +0800"
      },
      "message": "[Fix-18177][Task Plugin] Fix AliyunServerlessSpark plugin dependency conflicts and improve exception handling (#18180)\n\nCo-authored-by: xiangzihao \u003c460888207@qq.com\u003e"
    },
    {
      "commit": "dd8857b84c65c663fd0a494f1a7828a69648eba5",
      "tree": "666e627dccbc484811f26cbcd0d3bf0de84a4a52",
      "parents": [
        "5c85e15a8b96d4449c53c0260a72e3ae59c81253"
      ],
      "author": {
        "name": "xiangzihao",
        "email": "460888207@qq.com",
        "time": "Sat May 02 21:08:25 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 02 21:08:25 2026 +0800"
      },
      "message": "[Chore] Recover python e2e test in ci (#18209)"
    },
    {
      "commit": "5c85e15a8b96d4449c53c0260a72e3ae59c81253",
      "tree": "5936b81c2a9cede8f4368bf79ab1df11c2c43252",
      "parents": [
        "9563c66627c8d62b0225bd45cd7174d6d4381786"
      ],
      "author": {
        "name": "xiangzihao",
        "email": "460888207@qq.com",
        "time": "Sat May 02 20:22:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 02 20:22:45 2026 +0800"
      },
      "message": "[Chore] Unit-Test performance optimize (#18213)"
    },
    {
      "commit": "9563c66627c8d62b0225bd45cd7174d6d4381786",
      "tree": "ff3b89c2492b8c426480b5d104916a00cef7520a",
      "parents": [
        "710236bddd1bb890b6a88142bd2458504b16a45a"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Sat May 02 18:39:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 02 18:39:55 2026 +0800"
      },
      "message": "[Chore] Fix UT will be skip at CI (#18205)\n\nCo-authored-by: SbloodyS \u003c460888207@qq.com\u003e"
    },
    {
      "commit": "710236bddd1bb890b6a88142bd2458504b16a45a",
      "tree": "8f1f55963ca818d3a0dad1e91dd986dacfdf8fc5",
      "parents": [
        "0f975bac396da3604aa5b28757420ac8112f2777"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Fri May 01 23:26:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 01 23:26:38 2026 +0800"
      },
      "message": "[Fix-18197][Master] Fix master failover lock leak (#18207)\n\nThe per-master failover lock was acquired at\n/lock/master-failover/\u003cmasterAddress\u003e but released at the parent path\n/lock/master-failover, so the per-master lock node was never released\nand blocked subsequent failover from peer masters.\n\n* RegistryClient#getLock now returns an AutoCloseable RegistryLock,\n  enforcing acquire/release symmetry via try-with-resources.\n* RegistryClient#releaseLock(String) is removed; callers use the\n  returned handle.\n* FailoverCoordinator#doMasterFailover stores the lock path in a local\n  variable and uses try-with-resources."
    },
    {
      "commit": "0f975bac396da3604aa5b28757420ac8112f2777",
      "tree": "083521d33b34501696dc2cf8ad966c7be6e66d3d",
      "parents": [
        "6ba9f6651ff2be7723591d8f10239b3c393451da"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Fri May 01 21:28:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 01 21:28:38 2026 +0800"
      },
      "message": "Revert \"[Improvement-18056] Clean up unused methods and classes in the dolphi…\" (#18206)"
    },
    {
      "commit": "6ba9f6651ff2be7723591d8f10239b3c393451da",
      "tree": "352c0a88bce76e62b084b24ef6725a967a64c88d",
      "parents": [
        "ef306362698d892186670e563e3c2d800ff33c7d"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Fri May 01 19:01:14 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 01 19:01:14 2026 +0800"
      },
      "message": "[Chore][CI] Temporarily disable PythonTaskE2ETest due to CI runner issue (#18208)"
    },
    {
      "commit": "ef306362698d892186670e563e3c2d800ff33c7d",
      "tree": "c931b4ba380acc9ca1e6bc8863d0e1cc08727d86",
      "parents": [
        "16dbda94c8eb2d2c904096608d9979d5db7a822f"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Fri May 01 11:49:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 01 11:49:02 2026 +0800"
      },
      "message": "[Fix-18199][Doc] Fix incorrect description of Serial Discard execution strategy (#18204)"
    },
    {
      "commit": "16dbda94c8eb2d2c904096608d9979d5db7a822f",
      "tree": "9490e1a83f83b867a7e1526bb9458624b11cce6c",
      "parents": [
        "c502ea1778630f59c2972d6e8d38462d1e10dd05"
      ],
      "author": {
        "name": "leocook",
        "email": "leocook@163.com",
        "time": "Thu Apr 30 14:45:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 14:45:30 2026 +0800"
      },
      "message": "[Improvement-16754][DataX] Support DataX writer parameter batchSize (#18192)"
    },
    {
      "commit": "c502ea1778630f59c2972d6e8d38462d1e10dd05",
      "tree": "b02cc4a42b107bed30d947c9fa49292d4366358e",
      "parents": [
        "e07a7023fd844fc4bb26f60c42dbd01f938a751a"
      ],
      "author": {
        "name": "xiangzihao",
        "email": "460888207@qq.com",
        "time": "Tue Apr 28 14:13:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 14:13:45 2026 +0800"
      },
      "message": "[Doc-18193][dolphinscheduler-alert-http] Fix incorrect alert param doc (#18194)"
    },
    {
      "commit": "e07a7023fd844fc4bb26f60c42dbd01f938a751a",
      "tree": "96ce3fcb04ec5fff7767054b469c92582c91550a",
      "parents": [
        "74baefa4a12a3f3ee6f48bddee88932a0ca9f5f9"
      ],
      "author": {
        "name": "njnu-seafish",
        "email": "su_yichao@sina.com",
        "time": "Tue Apr 28 10:59:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 10:59:18 2026 +0800"
      },
      "message": "[Improvement-18056] Clean up unused methods and classes in the dolphinschudler-master module (#18164)"
    },
    {
      "commit": "74baefa4a12a3f3ee6f48bddee88932a0ca9f5f9",
      "tree": "44ff43328e9b697a43c60cfc4de9378090cb94e1",
      "parents": [
        "a29ce4b223eaefef1b0f9fd77da9f696685474c9"
      ],
      "author": {
        "name": "njnu-seafish",
        "email": "su_yichao@sina.com",
        "time": "Mon Apr 27 19:03:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 27 19:03:52 2026 +0800"
      },
      "message": "[Improvement-18064][ApiServer] Update globalParams replace logic and test case (#18068)"
    },
    {
      "commit": "a29ce4b223eaefef1b0f9fd77da9f696685474c9",
      "tree": "2fe44d7f5f96bdf389dd19d240b08e78693a1cfd",
      "parents": [
        "cfe064c276649ae76d148dc54df63f4ee62ffbaf"
      ],
      "author": {
        "name": "huangsheng",
        "email": "huangshengtx@163.com",
        "time": "Fri Apr 24 13:37:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 24 13:37:11 2026 +0800"
      },
      "message": "[Chore][UI] Fix @types/lodash version causing pnpm install failure (#18187)"
    },
    {
      "commit": "cfe064c276649ae76d148dc54df63f4ee62ffbaf",
      "tree": "336646b8717be1eab7b1b12399803b82f5ca1c05",
      "parents": [
        "939439cd830e56d8cd660d785ade961f1a24d61e"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Thu Apr 23 11:23:07 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 23 11:23:07 2026 +0800"
      },
      "message": "[Chore] Initialize CLAUDE.md (#18188)"
    },
    {
      "commit": "939439cd830e56d8cd660d785ade961f1a24d61e",
      "tree": "0650e01f891fe1ff2cf43a4bd2f1bd976064e7b6",
      "parents": [
        "91b75ee3792753bf35a69b44a2cd6f4c703aeb7a"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Mon Apr 20 13:53:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 13:53:09 2026 +0800"
      },
      "message": "[Fix-18182] [API] User can delete task definitions in unauthorized projects (#18183)"
    },
    {
      "commit": "91b75ee3792753bf35a69b44a2cd6f4c703aeb7a",
      "tree": "05c0c14b101cc238a7e5abb0f1e4e71010398d0b",
      "parents": [
        "1df9f6614129a5fa0a88fef17d87eeb52c687eab"
      ],
      "author": {
        "name": "SHRIHARI KULKARNI",
        "email": "163467964+shrihari7396@users.noreply.github.com",
        "time": "Sun Apr 19 09:15:22 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 19 11:45:22 2026 +0800"
      },
      "message": "[Improvement-17843][Master] Add IT case for task timeout alert (#18001)"
    },
    {
      "commit": "1df9f6614129a5fa0a88fef17d87eeb52c687eab",
      "tree": "62e430cb215fb54adb5514371e518955dd587615",
      "parents": [
        "5314ac0813c2145555c5ed79c6558901576957d3"
      ],
      "author": {
        "name": "luxiaolong",
        "email": "lindaluo83@126.com",
        "time": "Thu Apr 16 09:58:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 09:58:31 2026 +0800"
      },
      "message": "[DSIP-95][API] Complete the functionality of using dependencies in the complement data (#18003)"
    },
    {
      "commit": "5314ac0813c2145555c5ed79c6558901576957d3",
      "tree": "0a16c10390c04f95a4535317f105dfec5f839bb8",
      "parents": [
        "94bfbb048afe76f8ac534807a52878f5b43605b4"
      ],
      "author": {
        "name": "njnu-seafish",
        "email": "su_yichao@sina.com",
        "time": "Wed Apr 15 11:34:56 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 11:34:56 2026 +0800"
      },
      "message": "[Improvement-18056] Clean up unused methods and classes in the dolphinschudler-registry module (#18165)"
    },
    {
      "commit": "94bfbb048afe76f8ac534807a52878f5b43605b4",
      "tree": "fc0d0787af154db6c9e1bb99670364ec8ff88507",
      "parents": [
        "53a84b97d58e1eca683d4e448bcf2a1a3071a0d0"
      ],
      "author": {
        "name": "Jingyin Song",
        "email": "155625585+CloudExtreme@users.noreply.github.com",
        "time": "Tue Apr 14 15:30:05 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 15:30:05 2026 +0800"
      },
      "message": "[Fix-18168] Fix OBS listStorageEntity not returning subdirectories (#18170)"
    },
    {
      "commit": "53a84b97d58e1eca683d4e448bcf2a1a3071a0d0",
      "tree": "c74a70ca593d4d714f732a06405ea6abab75110c",
      "parents": [
        "64e3e276261fa57db057261c90da100285a4b112"
      ],
      "author": {
        "name": "njnu-seafish",
        "email": "su_yichao@sina.com",
        "time": "Tue Apr 14 14:51:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 14:51:06 2026 +0800"
      },
      "message": "[Improvement-18056] Clean up unused methods and classes in the dolphinschudler-service module (#18169)"
    },
    {
      "commit": "64e3e276261fa57db057261c90da100285a4b112",
      "tree": "b04f181b7859995b435b33ce1e3126865681faa2",
      "parents": [
        "69b3536a21b4efb677d5039d8ba2dc7a751d2ae1"
      ],
      "author": {
        "name": "xiangzihao",
        "email": "460888207@qq.com",
        "time": "Tue Apr 14 13:56:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 13:56:13 2026 +0800"
      },
      "message": "[Chore] Fix code scaning and cve (#18167)"
    },
    {
      "commit": "69b3536a21b4efb677d5039d8ba2dc7a751d2ae1",
      "tree": "595db197c256ba5cb715193a43d13d5cabf62b24",
      "parents": [
        "f80a62e98ce1638998439aceea779c3f26bdd341"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Mon Apr 13 10:44:35 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 10:44:35 2026 +0800"
      },
      "message": "[Improvement-18161][Pom] Does not support automatic hot-reloading of configuration files from ConfigMap (#18162)"
    },
    {
      "commit": "f80a62e98ce1638998439aceea779c3f26bdd341",
      "tree": "07b577dfc15b91543ee9a208f034f09ec7134624",
      "parents": [
        "4c348ed1a7c9d5daa15ad2233ed6b3ef354964f7"
      ],
      "author": {
        "name": "njnu-seafish",
        "email": "su_yichao@sina.com",
        "time": "Sun Apr 12 22:26:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 12 22:26:47 2026 +0800"
      },
      "message": "[Improvement-18056] Clean up unused methods and classes in the dolphinschudler-dao module (#18153)"
    },
    {
      "commit": "4c348ed1a7c9d5daa15ad2233ed6b3ef354964f7",
      "tree": "817b94df898fd4fb43b30d3a88b07ce7e0194e33",
      "parents": [
        "ce0bc70bcdd127823280816bd74f42e0cad005a2"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Sun Apr 12 21:22:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 12 21:22:45 2026 +0800"
      },
      "message": "Rename IWorkflowExecutionRunnable/ITaskExecutionRunnable to IWorkflowExecution/ITaskExecution (#18163)"
    },
    {
      "commit": "ce0bc70bcdd127823280816bd74f42e0cad005a2",
      "tree": "4f2bcbc41a787ef44ab988f6f4648c65ec44ca77",
      "parents": [
        "b8e3032b9e751eea3cd504cfa91b103ee7f9fc73"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Sun Apr 12 09:15:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 12 09:15:10 2026 +0800"
      },
      "message": "[Chore] Remove .flake8 file (#18160)"
    },
    {
      "commit": "b8e3032b9e751eea3cd504cfa91b103ee7f9fc73",
      "tree": "7c1950a2dd4fa397c52aab47916070be44f90ecf",
      "parents": [
        "643457661fa2146b7566c5ca394dc4c59c94319f"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Sat Apr 11 22:27:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 11 22:27:16 2026 +0800"
      },
      "message": "[Chore] Remove unused method in IWorkflowFailureStrategy (#18159)"
    },
    {
      "commit": "643457661fa2146b7566c5ca394dc4c59c94319f",
      "tree": "e4fea40c21b0b7b53aa3e94afc570d40a728798c",
      "parents": [
        "8077c2b7de969b71be51e3c4fd5c82b473ce8837"
      ],
      "author": {
        "name": "Wenjun Ruan",
        "email": "wenjun@apache.org",
        "time": "Sat Apr 11 10:26:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 11 10:26:13 2026 +0800"
      },
      "message": "[Feature-18136][API] Support view the running task/workflow of a active master/worker at UI monitor page (#18138)"
    },
    {
      "commit": "8077c2b7de969b71be51e3c4fd5c82b473ce8837",
      "tree": "55290cf7fb144cff5c3497d7d41c4cb9239f889a",
      "parents": [
        "08db4654e5a09fd1a35984de28dcbbed00fed0f5"
      ],
      "author": {
        "name": "HUANG XIAO",
        "email": "33706975+norrishuang@users.noreply.github.com",
        "time": "Fri Apr 10 14:06:14 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 10 14:06:14 2026 +0800"
      },
      "message": "[Feature-18070][Task] Add Amazon EMR Serverless task plugin (#18069)"
    },
    {
      "commit": "08db4654e5a09fd1a35984de28dcbbed00fed0f5",
      "tree": "028717d3dc6dea212cdb71dd761c7cd9c8335e8f",
      "parents": [
        "373d9d6ee1f06df97b2940c709604c13179792ea"
      ],
      "author": {
        "name": "xiangzihao",
        "email": "460888207@qq.com",
        "time": "Fri Apr 10 11:16:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 10 11:16:42 2026 +0800"
      },
      "message": "[Fix-18131] Workflow instance stuck in RUNNING state forever when using CONTINUE failure strategy with a failed upstream task (#18146)"
    },
    {
      "commit": "373d9d6ee1f06df97b2940c709604c13179792ea",
      "tree": "517cc4b86e87271c2fc4b67081f7ca64c9d9f45c",
      "parents": [
        "25f7429478a1135f2e78a94cf9140b7966197027"
      ],
      "author": {
        "name": "njnu-seafish",
        "email": "su_yichao@sina.com",
        "time": "Fri Apr 10 10:09:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 10 10:09:31 2026 +0800"
      },
      "message": "[Improvement-18056] Clean up unused methods and classes in the dolphinschudler-dao-plugin module (#18156)"
    },
    {
      "commit": "25f7429478a1135f2e78a94cf9140b7966197027",
      "tree": "fb7218fd3769ab5c0db14652666e1da3001ee663",
      "parents": [
        "01856e0ad3a1764b9b1abd9b5b8804ec8e390821"
      ],
      "author": {
        "name": "xiangzihao",
        "email": "460888207@qq.com",
        "time": "Thu Apr 09 22:18:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 09 22:18:58 2026 +0800"
      },
      "message": "[Fix-18154] Fix abnormal transmission of sub-workflow complement date (#18155)"
    },
    {
      "commit": "01856e0ad3a1764b9b1abd9b5b8804ec8e390821",
      "tree": "cf24446e79b0694a06610c8e044a5e7340ab5cd5",
      "parents": [
        "0c8e6460d9649845998153ab7791737dd44a1509"
      ],
      "author": {
        "name": "xiangzihao",
        "email": "460888207@qq.com",
        "time": "Thu Apr 09 20:25:51 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 09 20:25:51 2026 +0800"
      },
      "message": "[Improvement-18151] Simplify the code with lombok annotations (#18152)"
    },
    {
      "commit": "0c8e6460d9649845998153ab7791737dd44a1509",
      "tree": "8e0805957fb49adb72fd5fe6d5f1ac7445e9dccf",
      "parents": [
        "7240a8fdcfcac2140a422634b58318b00fb9aafd"
      ],
      "author": {
        "name": "xiangzihao",
        "email": "460888207@qq.com",
        "time": "Thu Apr 09 11:53:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 09 11:53:19 2026 +0800"
      },
      "message": "[Chore] Fix publish docker error (#18149)"
    },
    {
      "commit": "7240a8fdcfcac2140a422634b58318b00fb9aafd",
      "tree": "3fff2c30369de074377553a8a4863089260fc5da",
      "parents": [
        "becfbbb4ddf5aa30419522d6a1a73ec548c5e338"
      ],
      "author": {
        "name": "xiangzihao",
        "email": "460888207@qq.com",
        "time": "Thu Apr 09 10:54:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 09 10:54:40 2026 +0800"
      },
      "message": "[Fix-17557] Fix helm chart deploy error (#18148)"
    },
    {
      "commit": "becfbbb4ddf5aa30419522d6a1a73ec548c5e338",
      "tree": "fe5a25822906fdcac736b0a1b96846480e840366",
      "parents": [
        "7467cb24678cacb76762e268aa526be7b5cec032"
      ],
      "author": {
        "name": "njnu-seafish",
        "email": "su_yichao@sina.com",
        "time": "Thu Apr 09 09:53:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 09 09:53:06 2026 +0800"
      },
      "message": "[Improvement-18056] Clean up unused methods and classes in the dolphinschudler-common module (#18147)"
    },
    {
      "commit": "7467cb24678cacb76762e268aa526be7b5cec032",
      "tree": "f24170d93828aba1d59757beeeac0e99554cbe58",
      "parents": [
        "d2b0abd4fcbd169bc77fc4ae52dd8170926642bc"
      ],
      "author": {
        "name": "macdoor",
        "email": "macdoor@gmail.com",
        "time": "Wed Apr 08 16:26:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 16:26:37 2026 +0800"
      },
      "message": "[Improvement-18019][task-sql] Support SQL from resource file and parameter placeholders (#18020)"
    },
    {
      "commit": "d2b0abd4fcbd169bc77fc4ae52dd8170926642bc",
      "tree": "38003b3e63eab43af4880fc6116ad1ec71c4efd4",
      "parents": [
        "6112d1c54855b4816f787694af9a00b3b56d045d"
      ],
      "author": {
        "name": "njnu-seafish",
        "email": "su_yichao@sina.com",
        "time": "Wed Apr 08 14:05:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 14:05:46 2026 +0800"
      },
      "message": "[Improvement-18142][Datasource] Normalize the use of the DataSourceConstants class (#18143)"
    },
    {
      "commit": "6112d1c54855b4816f787694af9a00b3b56d045d",
      "tree": "127e192d1f2a353c0e4d2d804cb7b767682c2cf1",
      "parents": [
        "030e4405674343b6a43d8a96b963152d269a0fc8"
      ],
      "author": {
        "name": "xiangzihao",
        "email": "460888207@qq.com",
        "time": "Wed Apr 08 13:40:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 13:40:58 2026 +0800"
      },
      "message": "[Chore] Bump up vite (#18144)"
    },
    {
      "commit": "030e4405674343b6a43d8a96b963152d269a0fc8",
      "tree": "5dc2ca294ca49d8bbabdc4d88a37349246d2afb2",
      "parents": [
        "e827f2fd8953a171d600532207fb8100ba7f5f44"
      ],
      "author": {
        "name": "xiangzihao",
        "email": "460888207@qq.com",
        "time": "Wed Apr 08 12:34:48 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 12:34:48 2026 +0800"
      },
      "message": "change code owner (#18145)"
    },
    {
      "commit": "e827f2fd8953a171d600532207fb8100ba7f5f44",
      "tree": "e6c35c0cb77d818bad13b24a24ee5f5bfd522273",
      "parents": [
        "acc3ac94ab5cbadd37280770f2bfa68a5dc621c1"
      ],
      "author": {
        "name": "xiangzihao",
        "email": "460888207@qq.com",
        "time": "Tue Apr 07 19:57:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 07 19:57:09 2026 +0800"
      },
      "message": "[Chore] Bump lodash (#18141)"
    },
    {
      "commit": "acc3ac94ab5cbadd37280770f2bfa68a5dc621c1",
      "tree": "a6f0b35fd6e6a81eb7355dabcdd55757d26e4125",
      "parents": [
        "6d686f33ac120f1ab9d0b81a939abf77e1091d2c"
      ],
      "author": {
        "name": "xiangzihao",
        "email": "460888207@qq.com",
        "time": "Tue Apr 07 14:57:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 07 14:57:30 2026 +0800"
      },
      "message": "[Fix-18139][Docker] Docker compose deployment error (#18140)"
    },
    {
      "commit": "6d686f33ac120f1ab9d0b81a939abf77e1091d2c",
      "tree": "93c708209ba142c10903db19d8f04a81fbf00286",
      "parents": [
        "08e7bda20ec290107b88a4bc8997784de9ce2f6f"
      ],
      "author": {
        "name": "njnu-seafish",
        "email": "su_yichao@sina.com",
        "time": "Tue Apr 07 14:25:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 07 14:25:00 2026 +0800"
      },
      "message": "[Improvement-18056] Clean up unused methods and classes in the dolphinschudler-api module (#18134)"
    },
    {
      "commit": "08e7bda20ec290107b88a4bc8997784de9ce2f6f",
      "tree": "b3f88b3538601b46a87e82d74a8bb8958c7ac8e4",
      "parents": [
        "022d28be72d4fa039c5da56b093f6b9bcaa1fa77"
      ],
      "author": {
        "name": "xiangzihao",
        "email": "460888207@qq.com",
        "time": "Tue Apr 07 10:20:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 07 10:20:45 2026 +0800"
      },
      "message": "[Improvement-17561][Helm] Update zookeeper helm chart version (#18124)"
    },
    {
      "commit": "022d28be72d4fa039c5da56b093f6b9bcaa1fa77",
      "tree": "a2141adf2cfd3131dec8d948cfd1aee0f706fce2",
      "parents": [
        "ec0947eeb33d183c8193ca66e97851ca20db3da4"
      ],
      "author": {
        "name": "xiangzihao",
        "email": "460888207@qq.com",
        "time": "Mon Apr 06 12:48:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 12:48:06 2026 +0800"
      },
      "message": "[Improvement-17562][Helm] Update postgresql helm chart version (#18123)"
    },
    {
      "commit": "ec0947eeb33d183c8193ca66e97851ca20db3da4",
      "tree": "99540fbf5ec9a3902ef50d8a71e2a41ee1bfc906",
      "parents": [
        "7022d56e4be2fb6bf7dce7f3ef5e9f490bbb1f14"
      ],
      "author": {
        "name": "xiangzihao",
        "email": "460888207@qq.com",
        "time": "Fri Apr 03 15:33:41 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 15:33:41 2026 +0800"
      },
      "message": "[Improvement-17564][Helm] Update minio helm chart version (#18122)"
    },
    {
      "commit": "7022d56e4be2fb6bf7dce7f3ef5e9f490bbb1f14",
      "tree": "a31f2b14805f57d3a608453d9467774b9deca030",
      "parents": [
        "ff52988f31887665dd9f2a0f896fc9324b0136ca"
      ],
      "author": {
        "name": "Molin Wang",
        "email": "wcmolin@gmail.com",
        "time": "Fri Apr 03 14:35:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 14:35:53 2026 +0800"
      },
      "message": "[Fix-18132][API] Sync workflow definition version back after create/update (#18133)"
    },
    {
      "commit": "ff52988f31887665dd9f2a0f896fc9324b0136ca",
      "tree": "98836cd2806bfaf9c354c98a64f9033e13066b08",
      "parents": [
        "0cba7932bb09353686cc6eda488dbeb91e3eb300"
      ],
      "author": {
        "name": "njnu-seafish",
        "email": "su_yichao@sina.com",
        "time": "Thu Apr 02 17:18:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 17:18:30 2026 +0800"
      },
      "message": "[Improvement-18127][Master] Remove the redundant workflow completion check when handling workflow timeout events (#18128)"
    },
    {
      "commit": "0cba7932bb09353686cc6eda488dbeb91e3eb300",
      "tree": "382e5ca73b00958a8f73c91e6f42792dd45852ec",
      "parents": [
        "40493c3393d88a97a376115b7f560486ea0c8753"
      ],
      "author": {
        "name": "njnu-seafish",
        "email": "su_yichao@sina.com",
        "time": "Thu Apr 02 16:47:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 16:47:43 2026 +0800"
      },
      "message": "[Improvement-18084][API] Address the inconsistent class comments in DataSourceService and DataSourceServiceImpl classes. (#18086)"
    }
  ],
  "next": "40493c3393d88a97a376115b7f560486ea0c8753"
}
