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]

Reply via email to