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]
