海豚調度調優 | 如何解決任務被禁用出現的Bug

💡 ?本系列文章是 DolphinScheduler 由淺入深的教程,涵蓋搭建、二開迭代、核心原理解讀、運維和管理等一系列內容。適用于想對 DolphinScheduler了解或想要加深理解的讀者。

祝開卷有益。?

本系列教程基于 DolphinScheduler 2.0.5 做的優化。(穩定版推薦使用3.1.9

上篇回顧:海豚調度調優 | 正在運行的工作流(DAG)如何重新拉起失敗的任務(Task)

最近調度穩定運行一段時間了,有時間分享一下我們在使用海豚調度過程中遇到的問題和使用經驗,希望可以幫到大家。

file

今天分享的是任務被禁用出現的 Bug,包含兩相關聯的問題。

已有的功能:在一個 DAG(工作流)中,存在節點被禁用的情況,表示該節點不會執行,執行到這個節點的時候,可以跳過這個節點繼續執行下游節點。

問題1[1]:在 Version 2.0.1 中,存在一個 BUG,如下圖所示,有 6 個節點,其中 test1_stop 和 test2_stop 節點是被禁用的。

file

從上圖可以看出,test3 依賴 test1_stop 和 test2_stop。但是執行的時候,發現 test2 節點還在運行呢,test3 就已經執行了,并沒有等待所有上游節點運行結束

上述問題如何解決呢?

新增一個遞歸向上查找間接依賴的方法(如果是上游節點被禁用了,繼續向上查找)

新增 setIndirectDepList 方法,如果該節點的上游被禁用了,則繼續尋找上游。最終把所有的上游加到 indirectDepCodeList 這里。

/***?This?function?is?specially?used?to?handle?the?dependency?situation?where?the?parent?node?is?a?prohibited?node.*?When?the?parent?node?is?a?forbidden?node,?the?dependency?relationship?should?continue?to?be?traced**?@param?taskCode????????????taskCode*?@param?indirectDepCodeList?All?indirectly?dependent?nodes*/
private?void?setIndirectDepList(String?taskCode,?List<String>?indirectDepCodeList)?{TaskNode?taskNode?=?dag.getNode(taskCode);List<String>?depCodeList?=?taskNode.getDepList();for?(String?depsNode?:?depCodeList)?{if?(forbiddenTaskMap.containsKey(depsNode))?{setIndirectDepList(depsNode,?indirectDepCodeList);}?else?{indirectDepCodeList.add(depsNode);}}
}

在 isTaskDepsComplete 方法中,引用這個 list ,遍歷。

file

好的,問題1[1]到這里就結束了,修復之后,test3 的直接上游節點 test2_stop 被禁用時,會繼續往上找到 test2, 如果 test2 還在運行,test3 不會立刻運行。

*負雜的系統,隨著不斷迭代,總會伴隨著小"驚喜"。繼續往下看?*

上述新增的邏輯,帶來了問題2[2],請看下圖:運行test_del_node 節點,選擇向后執行,按照正常的邏輯,會運行?test_del_node 和 test_del_node_36j 這兩個節點。但是 test_del_node_36j 一直不執行。

file

查看 Master 日志發現,在提交 test_del_node_36j 這個節點的時候,出現了submit standby task error這個錯誤,拿到本地 debug 之后,發現在 setIndirectDepList 中出現了 NPE。最后定位到下面兩行代碼:

TaskNode?taskNode?=?dag.getNode(taskCode);
List<String>?depCodeList?=?taskNode.getDepList();

通過分析,最后發現是因為test_del_node_36j的節點的直接上游節點被禁用了,按照 setIndirectDepList 里面的邏輯,存在被禁用的節點,是會繼續往上找的,找到間接依賴。

dag 在工作流啟動的時候,根據 startNode 生成了關系圖(dag),dag 里面只有兩個節點: test_del_node 和 test_del_node_36j 。此時遞歸查找test_del_node_36j上游節點的上游節點的時候,報了 NEP。

處理方式也比較簡單,加一個 null 的判斷。

file

這樣,問題2[2]就解決了。

總結

  • 問題1 在 2.0.3-release 中得到修復。?

  • 問題2 在 3.0.5-release 中得到修復。

如果不想升級的小伙伴,可以自行根據自己的版本,進行修改。

需要注意的是:

  • 2.x 版本,對應的代碼文件是 WorkflowExecuteThread.java?

  • 3.x 版本,對應的代碼文件是 WorkflowExecuteRunnable.java

以上就是任務被禁用出現的Bug關聯的兩個問題的分享,如果有任何疑問,都可以與我交流,同樣社區也推薦大家使用3.1.9版本,這是相對比較穩定的版本,上文中,還提到了 dag 的生成,下次接著講,希望可以幫到你。

本文由 白鯨開源科技 提供發布支持!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/36364.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/36364.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/36364.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PTA—C語言期末復習(選擇題)

1. 按照標識符的要求&#xff0c;&#xff08;A&#xff09;不能組成標識符。 A.連接符 B.下劃線 C.大小寫字母 D.數字字符 在大多數編程語言中&#xff0c;標識符通常由字母&#xff08;包括大寫和小寫&#xff09;、數字和下劃線組成&#xff0c;但不能以數字開頭&#xff0c…

如何解決centos停止維護后更換Debian11平替?

再有9天時間centos7.x就將停止維護,最近很多人已經再更換系統了!有推薦alibabacloud,opencloud,debian,ubuntu,centos-stream,tencentos,anolis,rockey,almal,oracle,arch,Fedora,opensuse 很多人不知道選什么,這里就主要介紹一下 如果你是使用寶塔面板 并且想要無縫銜…

java 數據新增、更新、刪除監聽,并記錄日志或其他業務

數據新增、更新、刪除監聽&#xff0c;并記錄日志或其他業務 1.使用場景 日志記錄、KPI考核&#xff08;業務進行到某個階段&#xff0c;對人員的考核&#xff09;等等 實體監聽器 實體增加注解 EntityListeners({KpiOrderCounter.class}) /*** 訂單管理考核** author sul…

1 數據結構算法:目錄

1 哈希應用-CSDN博客 2 雙指針-CSDN博客 3 滑動窗口-CSDN博客

記錄PC微信小程序支付無響應問題

項目結構是小程序webview 訪問h5&#xff0c;h5掉起支付時候&#xff0c;通過通信調用小程序的wx.requestPayment&#xff0c;完成支付。 測試發現&#xff0c;pc微信打開小程序&#xff0c;掉起微信支付無響應&#xff0c;也不進入任何回調 所以&#xff0c;此時支付必須跳轉…

qiankun如何實現在子應用打開不帶子應用前綴的新窗口頁面?

qiankun 是一個基于 single-spa 的微前端實現方案&#xff0c;用于將多個前端應用整合到同一個主應用中。在 qiankun 的架構中&#xff0c;子應用通常是通過 URL 的路徑來激活和掛載的。但是&#xff0c;在子應用中打開一個新窗口或標簽頁&#xff0c;并且這個頁面不是子應用的…

JDBC以及事務

1、JDBC是什么&#xff1f; JDBC是Java DataBase Connectivity&#xff08;Java語言鏈接數據庫&#xff09; 2、JDBC的本質 JDBC是一套接口&#xff0c;有調用者&#xff08;java工程師&#xff09;和實現者&#xff08;SUN公司&#xff09;&#xff08;實現類被稱為驅動&…

Android13系統導航欄添加音量加減鍵按鈕功能

不知道為什么拿到芯片原廠發布給我們的Android13系統源碼編譯后&#xff0c;導航欄沒有音量加減鍵&#xff0c;客戶有反饋這個問題&#xff0c;所以特意加了一下&#xff0c;修改記錄如下&#xff1a;frameworks/base目錄下 commit 9cb2244d61a237cab03c540bfcca6e4fac2bea2c …

Linux OpenGrok搭建

文章目錄 一、目的二、環境三、相關概念3.1 OpenGrok3.2 CTags3.3 Tomcat 四、OpenGrok搭建4.1 安裝jdk4.2 安裝ctags依賴4.3 安裝universal-ctags4.3.1 下載universal-ctags4.3.2 編譯&&安裝universal-ctags 4.4 安裝Tomcat4.4.1 下載&&解壓Tomcat4.4.2 啟動T…

繼續撿錢,每天幾百塊!

每日操作計劃&#xff1a; 標普信息科技(161128)&#xff0c;溢價8.5%&#xff0c;限購100&#xff0c;一拖七&#xff0c;單戶每天700*8.5%59元 印度基金LOF(164824)&#xff0c;溢價2.6%&#xff0c;限購100&#xff0c;一拖七&#xff0c;單戶每天700*2.6%18元 美元債LOF(…

【leetcode系列】46.全排列

題目&#xff1a;給定一個不含重復數字的數組 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意順序 返回答案。 示例 1&#xff1a; 輸入&#xff1a;nums [1,2,3] 輸出&#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例 2&#xff1a; 輸入&am…

算法力扣刷題記錄 二十【18題. 四數之和】

前言 哈希篇&#xff0c;繼續。 記錄 二十【18題. 四數之和】 一、題目閱讀 給你一個由 n 個整數組成的數組 nums &#xff0c;和一個目標值 target 。請你找出并返回滿足下述全部條件且不重復的四元組 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若兩個四元組元素一…

為什么要本地化您的多媒體內容?

當我們訪問網站、應用程序和社交媒體時&#xff0c;體驗不再局限于陳舊的文本和靜態圖像。現代處理能力和連接速度提高了快速加載視頻、音頻和動畫的可能性。 這一切都提供了更具沉浸感和互動性的用戶體驗。多媒體是數字營銷中最有效的內容之一&#xff0c;因為它對用戶更具吸…

vue-cli 項目打包優化-基礎篇

1、項目打包完運行空白 引用資源路徑問題&#xff0c;打包完的【index.html】文件引用其他文件的引用地址不對 參考配置&#xff1a;https://cli.vuejs.org/zh/config 修改vue.config.js &#xff0c;根據與 后端 或 運維 溝通修改 module.export {// 默認 publicPath: //…

使用API有效率地管理Dynadot域名,為文件夾中的域名設置域名轉發

關于Dynadot Dynadot是通過ICANN認證的域名注冊商&#xff0c;自2002年成立以來&#xff0c;服務于全球108個國家和地區的客戶&#xff0c;為數以萬計的客戶提供簡潔&#xff0c;優惠&#xff0c;安全的域名注冊以及管理服務。 Dynadot平臺操作教程索引&#xff08;包括域名郵…

全彩屏負氧離子監測站

TH-FZ5在追求綠色生態、健康出行的今天&#xff0c;景區不僅僅是人們休閑游玩的好去處&#xff0c;更是人們體驗大自然、感受清新空氣的重要場所。為了進一步提升游客的游覽體驗&#xff0c;許多景區紛紛引入了全彩屏負氧離子監測站&#xff0c;這一創新舉措不僅為景區增添了科…

【懷莊之醉白酒】懷莊之醉醬香白酒哪款好?

【懷莊之醉醬香白酒】在懷莊之醉醬香白酒的豐富系列中&#xff0c;懷莊之醉尊品、懷莊之醉三星和懷莊之醉匠心之作是三款受到廣泛歡迎的產品。 每一款酒都具備其獨特的風味和適合的飲用場合。以下是對這三款酒特性的分析&#xff1a; 懷莊之醉 尊品&#xff1a;懷莊之醉 尊品…

云通SIPX,您的碼號資源智能調度專家!

在數字化轉型的浪潮中&#xff0c;號碼資源作為企業與客戶溝通的重要橋梁&#xff0c;其管理效率直接關系到企業運營的成敗。隨著運營商對號碼資源管理的規范化和精細化&#xff0c;企業對高效、智能的號碼資源管理需求日益增長&#xff0c;以實現對外呼叫的降本增效。 一、什么…

學生成績管理系統帶8000字文檔學生選課管理系統java項目javaweb項目ssm項目jsp項目java課程設計java畢業設計

文章目錄 學生選課成績管理系統一、項目演示二、項目介紹三、8500字項目文檔四、部分功能截圖五、部分代碼展示六、底部獲取項目源碼帶8500字文檔&#xff08;9.9&#xffe5;帶走&#xff09; 學生選課成績管理系統 一、項目演示 選課成績管理系統 二、項目介紹 語言: Java …

php數據結構之鏈表

本文由 ChatMoney團隊出品 鏈表的基本概念 鏈表&#xff08;Linked List&#xff09;是一種常見的數據結構&#xff0c;它由一系列節點組成&#xff0c;每個節點除了存儲數據外&#xff0c;還包含指向下一個節點的指針。與數組相比&#xff0c;鏈表在插入和刪除操作上具有更高…