lucasbru opened a new pull request, #23500:
URL: https://github.com/apache/kafka/pull/23500

   StreamsGroupTopologyDescriptionBackoff keeps one back-off entry per group, 
and two call sites arm it with different epoch semantics: the heartbeat path 
arms at the group's real topology epoch, while the classic-group-join 
conversion path (throttleConversionDelete) arms at the UNCERTAIN(-2) sentinel 
epoch when a topology delete fails. armOrExtend already refuses to overwrite a 
stored entry whose epoch is newer than the one being armed, so a heartbeat's 
real-epoch window can't be clobbered by a stale or lower-priority arm. 
armIfNotActive, used by both the heartbeat path and (via 
throttleConversionDelete) the conversion path, only checked for an exact epoch 
match, so a real-epoch entry left behind by heartbeat back-off from before a 
group's last member departed could be silently overwritten by a later 
conversion-delete-throttle arm on the same now-empty group, discarding its 
accumulated exponential-backoff attempt count.
   
   This brings armIfNotActive's epoch handling in line with armOrExtend's, so a 
lower-priority arm can no longer regress a stored entry to an older epoch. 
Added a unit test mirroring the existing armOrExtend coverage for the same 
guard.


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