dongnuo123 commented on code in PR #15954: URL: https://github.com/apache/kafka/pull/15954#discussion_r1603521402
########## group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupMetadataManager.java: ########## @@ -1197,6 +1199,82 @@ private void throwIfClassicProtocolIsNotSupported( } } + /** + * Validates if the consumer group member uses the classic protocol. + * + * @param member The ConsumerGroupMember. + */ + private void throwIfMemberDoesNotUseClassicProtocol(ConsumerGroupMember member) { + if (!member.useClassicProtocol()) { + throw new UnknownMemberIdException( + String.format("Member %s does not use the classic protocol.", member.memberId()) + ); + } + } + + /** + * Validates if the generation id from the request matches the member epoch. + * + * @param groupId The ConsumerGroup id. + * @param memberEpoch The member epoch. + * @param requestGenerationId The generation id from the request. + */ + private void throwIfGenerationIdUnmatched( + String groupId, + int memberEpoch, + int requestGenerationId + ) { + if (memberEpoch != requestGenerationId) { + throw Errors.ILLEGAL_GENERATION.exception( + String.format("The request generation id %s is not equal to the member epoch %d from the consumer group %s.", + requestGenerationId, memberEpoch, groupId) + ); + } + } + + /** + * Validates if the protocol type and the protocol name from the request matches those of the consumer group. + * + * @param member The ConsumerGroupMember. + * @param requestProtocolType The protocol type from the request. + * @param requestProtocolName The protocol name from the request. + */ + private void throwIfClassicProtocolUnmatched( + ConsumerGroupMember member, + String requestProtocolType, + String requestProtocolName + ) { + if (!ConsumerProtocol.PROTOCOL_TYPE.equals(requestProtocolType)) { + throw Errors.INCONSISTENT_GROUP_PROTOCOL.exception( + String.format("The protocol type %s from member %s request is not equal to the group protocol type %s.", + requestProtocolType, member.memberId(), ConsumerProtocol.PROTOCOL_TYPE) + ); + } else if (!member.supportedClassicProtocols().get().iterator().next().name().equals(requestProtocolName)) { Review Comment: Yes it's always set here -- 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: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org