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]