ricky2129 opened a new issue, #11020:
URL: https://github.com/apache/seatunnel/issues/11020

   raising a gap we hit on upgrade, plus a broader question.
   
     1. Concrete gap (specific):
     SerialVersionUIDCheckerTest (#9118) only scans classes implementing 
SeaTunnelSource/SeaTunnelSink. But the serialized job graph also includes 
config factories (e.g.
     MySqlSourceConfigFactory) and config objects (e.g. JdbcConnectionConfig) — 
these aren't covered.
   
     Example: MySqlSourceConfigFactory has no serialVersionUID. Adding one 
field changed its auto-generated UID, so jobs submitted on the old version 
failed to deserialize
     on the new one (InvalidClassException) on restart. The checker can't catch 
this because it doesn't scan the class.
   
     Would you accept a PR extending the checker to config factories / config / 
DAG classes?
   
     2. Broader question (general):
     Even with a UID, compatibility isn't guaranteed. JdbcConnectionConfig has 
a pinned UID (2L), but 2.3.13 added new fields — old state deserializes with no 
error, but
     the new fields come back 0/null instead of their defaults (initializers 
don't run on deserialization). So a UID alone hides a silent behavior change.
     
     So the real questions:
     - Is restoring a running job's serialized state across versions expected 
to work, or is stop-with-savepoint + resubmit the only supported upgrade path?
     - What's the recommended way to add a field to a serialized config/state 
class without breaking or silently changing old state (readObject / defaults / 
a versioning
     convention)?
     
     Happy to contribute the checker extension if it's wanted


-- 
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