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]

Reply via email to