njnu-seafish commented on code in PR #18549: URL: https://github.com/apache/dolphinscheduler/pull/18549#discussion_r4216103166
########## docs/docs/en/guide/upgrade/upgrade.md: ########## @@ -75,6 +75,14 @@ Execution result: - After version 3.3.X and later, we only support upgrading from 3.0.0. For versions lower than this, please download the historical version and upgrade to 3.0.0. - After version 3.3.X and later, binary packages no longer provide plugins dependencies by default, so when you use them for the first time, you need to download and install them yourself. For more information, please refer to [Pseudo-Cluster](../installation/pseudo-cluster.md). +#### Rolling Upgrade Order + +When performing a rolling upgrade, **the Alert Server must be upgraded before Master/Worker**. + +Starting from 3.5.0, the Master may persist new `alert_type` enum values (e.g. `TASK_RESULT`) into the `t_ds_alert` table. If the Alert Server has not yet been upgraded to a version that includes the new enum value, MyBatis will deserialize the unknown value as `null`, causing `AlertSender` to throw a `NullPointerException` while building the alert data. The alert will remain stuck in `WAIT_EXECUTION` and never be delivered. Review Comment: > If the upgrade fails, users need to be provided with specific operation steps. Thanks for the feedback. Fixed in be65492fc3 — the upgrade doc now provides concrete recovery steps for a failed upgrade. The new "If the upgrade fails" section (after the Rolling Upgrade Order) covers the case where Master/Worker were already upgraded before the Alert Server and new alert_type values were persisted to t_ds_alert: Upgrade the Alert Server to a version that includes the new enum values and restart it — alerts stuck in WAIT_EXECUTION will be picked up and delivered normally. If the Alert Server cannot be upgraded immediately, stop the old Alert Server first, then back up and clean up the affected rows (create table t_ds_alert_bak as select * from t_ds_alert where alert_type = 8; followed by delete from t_ds_alert where alert_type = 8;), so they cannot keep blocking alert delivery. The Chinese upgrade doc is updated in sync. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
