DolphinScheduler在2020年2月24日發布了新版本1.2.1,從版本號就可以看出,這是一個小版本。主要涉及BUG修復、功能增強、新特性三個方面,我們會根據其發布內容,做簡要的源碼分析。
由於涉及內容較多,前端功能不再分析。
Worker Server日志脫敏
主要是對日志中的密碼進行脫敏。我們知道worker的日志是通過logback打印的,官方也就是通過配置conversionRule來實現過濾的。實現邏輯比較簡單,核心代碼如下:
@Override public String convert(ILoggingEvent event) { // get original log String requestLogMsg = event.getFormattedMessage(); // desensitization log return convertMsg(requestLogMsg); }
public static final String DATASOURCE_PASSWORD_REGEX = "(?<=(\"password\":\")).*?(?=(\"))";
其實就是在打印日志的時候,通過正則表達式,把password給過濾掉了。個人不太喜歡這個實現方式,畢竟原PR的需求就是不要打印調度本身配置的數據源的密碼信息,結果官方把所有的日志中的password都給脫敏了!
配置文件適當合並
這主要是設計配置項的合並,就是把多個配置文件合並成一個,減少配置文件數量。據說后面的版本又要拆開了。
可創建包含 "." 的用戶名
這個主要是修改了用戶名校驗的正則表達式。
public static final Pattern REGEX_USER_NAME = Pattern.compile("^[a-zA-Z0-9._-]{3,20}$");
可切換 Spark 版本
主要是解決多spark版本切換的問題。核心代碼如下,其實就是根據當前參數選擇對應的spark-submit
private static final String SPARK1_COMMAND = "${SPARK_HOME1}/bin/spark-submit"; private static final String SPARK2_COMMAND = "${SPARK_HOME2}/bin/spark-submit"; .................. String sparkCommand = SPARK2_COMMAND; if (SparkVersion.SPARK1.name().equals(sparkParameters.getSparkVersion())) { sparkCommand = SPARK1_COMMAND; }
去除 Master 和 Worker 監聽端口(5566,7788)
issue里面說的比較清楚,就不再分析
其他的都是一些BUG修復,或特性的增強,整體來說分析的意義不是很大,就不再一一研究,等下一個改動較大的版本再說。
新特性:
- [#1497] 通過 API 創建的工作流在前端展示時自動調整布局。
- [#747] Worker server 運行日志脫敏。
- [#1635] 配置文件適當合並。
- [#1547] 節點內容編輯支持全屏縮放。
增強:
- [#184] 被工作流引用的 worker 不能被刪除。
- [#1441] 可創建包含 "." 的用戶名。
- [#839] 可切換 Spark 版本。
- [#1511] 前后端編譯文件合並。
- [#1509] 去除 Master 和 Worker 監聽端口(5566,7788)。
- [#1575] 去除 kazoo ,簡化部署。
- [#1300] 郵件內容可右對齊。
- [#1599] 增加前端部署的 nginx 配置文件。
- 支持 Mac 進行開發和 debug。
Bug 修復:
- 特定情況下彈出框不能關閉。
- [#1399] 日志信息中字段順序錯誤。
- [#1379] sql 任務節點日期轉換錯誤。
- [#1477] 特定情況下,數據庫延遲的時候,任務會一直執行。
- [#1514] 隊列關聯用戶后修改隊列信息,新修改的隊列信息未保存到數據庫。
- [#1768] 用戶管理分頁錯誤。
- [#1770] 用戶取消租戶關聯后,仍能使用原租戶 hdfs 的資源。
- [#1779] 子進程失敗后仍顯示成功。
- [#1789] 通過任務實例頁面查看任務執行歷史顯示錯誤。
- [#1810] 特定情況下,依賴節點不顯示具體依賴。
- [#1816] 添加多個依賴后,再添加新的依賴時,依賴列表讀取錯誤。
- [#1828] UDF 授權后,UDF 文件路徑授權錯誤。