@@ -812,11 +812,12 @@ func (cg *ConsumerGroup) nextGeneration(memberID string) (string, error) {
812812 var generationID int
813813 var groupAssignments GroupMemberAssignments
814814 var assignments map [string ][]int
815+ var protocolName string
815816 var err error
816817
817818 // join group. this will join the group and prepare assignments if our
818819 // consumer is elected leader. it may also change or assign the member ID.
819- memberID , generationID , groupAssignments , err = cg .joinGroup (memberID )
820+ memberID , generationID , protocolName , groupAssignments , err = cg .joinGroup (memberID )
820821 if err != nil {
821822 cg .withErrorLogger (func (log Logger ) {
822823 log .Printf ("Failed to join group %s: %v" , cg .config .ID , err )
@@ -828,7 +829,7 @@ func (cg *ConsumerGroup) nextGeneration(memberID string) (string, error) {
828829 })
829830
830831 // sync group
831- assignments , err = cg .syncGroup (memberID , generationID , groupAssignments )
832+ assignments , err = cg .syncGroup (memberID , generationID , protocolName , groupAssignments )
832833 if err != nil {
833834 cg .withErrorLogger (func (log Logger ) {
834835 log .Printf ("Failed to sync group %s: %v" , cg .config .ID , err )
@@ -905,10 +906,10 @@ func (cg *ConsumerGroup) nextGeneration(memberID string) (string, error) {
905906// * InconsistentGroupProtocol:
906907// * InvalidSessionTimeout:
907908// * GroupAuthorizationFailed:
908- func (cg * ConsumerGroup ) joinGroup (memberID string ) (string , int , GroupMemberAssignments , error ) {
909+ func (cg * ConsumerGroup ) joinGroup (memberID string ) (string , int , string , GroupMemberAssignments , error ) {
909910 request , err := cg .makeJoinGroupRequest (memberID )
910911 if err != nil {
911- return "" , 0 , nil , err
912+ return "" , 0 , "" , nil , err
912913 }
913914
914915 response , err := cg .coord .joinGroup (request )
@@ -919,20 +920,19 @@ func (cg *ConsumerGroup) joinGroup(memberID string) (string, int, GroupMemberAss
919920 memberID = response .MemberID
920921 }
921922 if err != nil {
922- return memberID , 0 , nil , err
923+ return memberID , 0 , "" , nil , err
923924 }
924925
925926 generationID := response .GenerationID
926927
927928 cg .withLogger (func (l Logger ) {
928929 l .Printf ("joined group %s as member %s in generation %d" , cg .config .ID , memberID , generationID )
929930 })
930-
931931 var assignments GroupMemberAssignments
932932 if iAmLeader := response .MemberID == response .LeaderID ; iAmLeader {
933933 v , err := cg .assignTopicPartitions (response )
934934 if err != nil {
935- return memberID , 0 , nil , err
935+ return memberID , 0 , "" , nil , err
936936 }
937937 assignments = v
938938
@@ -949,7 +949,7 @@ func (cg *ConsumerGroup) joinGroup(memberID string) (string, int, GroupMemberAss
949949 l .Printf ("joinGroup succeeded for response, %v. generationID=%v, memberID=%v" , cg .config .ID , response .GenerationID , response .MemberID )
950950 })
951951
952- return memberID , generationID , assignments , nil
952+ return memberID , generationID , response . ProtocolName , assignments , nil
953953}
954954
955955// makeJoinGroupRequest handles the logic of constructing a joinGroup
@@ -1044,8 +1044,8 @@ func (cg *ConsumerGroup) assignTopicPartitions(group *JoinGroupResponse) (GroupM
10441044// * IllegalGeneration:
10451045// * RebalanceInProgress:
10461046// * GroupAuthorizationFailed:
1047- func (cg * ConsumerGroup ) syncGroup (memberID string , generationID int , memberAssignments GroupMemberAssignments ) (map [string ][]int , error ) {
1048- request := cg .makeSyncGroupRequest (memberID , generationID , memberAssignments )
1047+ func (cg * ConsumerGroup ) syncGroup (memberID string , generationID int , protocolName string , memberAssignments GroupMemberAssignments ) (map [string ][]int , error ) {
1048+ request := cg .makeSyncGroupRequest (memberID , generationID , protocolName , memberAssignments )
10491049 response , err := cg .coord .syncGroup (request )
10501050 if err == nil && response .Error != nil {
10511051 err = response .Error
@@ -1066,11 +1066,13 @@ func (cg *ConsumerGroup) syncGroup(memberID string, generationID int, memberAssi
10661066 return response .Assignment .AssignedPartitions , nil
10671067}
10681068
1069- func (cg * ConsumerGroup ) makeSyncGroupRequest (memberID string , generationID int , memberAssignments GroupMemberAssignments ) * SyncGroupRequest {
1069+ func (cg * ConsumerGroup ) makeSyncGroupRequest (memberID string , generationID int , protocolName string , memberAssignments GroupMemberAssignments ) * SyncGroupRequest {
10701070 request := & SyncGroupRequest {
10711071 GroupID : cg .config .ID ,
10721072 GenerationID : generationID ,
10731073 MemberID : memberID ,
1074+ ProtocolType : defaultProtocolType ,
1075+ ProtocolName : protocolName ,
10741076 }
10751077
10761078 if memberAssignments != nil {
0 commit comments