dpol1 commented on PR #8788: URL: https://github.com/apache/storm/pull/8788#issuecomment-4702260180
@reiabreu yeah, optional-i32 + a new i64 field is the compat path I weighed before going in-place. Two notes on the snippet: the new field needs to be optional, not required, or a legacy producer that only sets the old one fails Thrift's required-field check on the new reader and the fallback never runs. Also the read fallback only covers old worker → new Nimbus. A new worker writing only `time_secs_long` still won't deserialize on an old Nimbus, so a real rolling upgrade also needs writers setting both fields for a release, then dropping the i32 later. I went in-place to avoid carrying two fields plus a cleanup release, and because these heartbeat structs don't have a rolling-upgrade contract today. A full restart avoids the mixed-version window completely — Nimbus times out on receipt time, so heartbeats recover within an interval once everything's upgraded. If we want heartbeats to survive a rolling upgrade I'll switch to optional + dual-write and track the i32 removal as a follow-up. Otherwise I'd keep this and just call out the restart in the docs. -- 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]
