diff --git a/consumergroup.go b/consumergroup.go index b32f9016..b4601fb6 100644 --- a/consumergroup.go +++ b/consumergroup.go @@ -941,6 +941,15 @@ func (cg *ConsumerGroup) joinGroup(conn coordinator, memberID string) (string, i if err == nil && response.ErrorCode != 0 { err = Error(response.ErrorCode) } + // KIP-394: if the broker requires a member ID before allowing the + // consumer to join the group, retry the join with the assigned member ID. + if err == MemberIDRequired { + request.MemberID = response.MemberID + response, err = conn.joinGroup(request) + if err == nil && response.ErrorCode != 0 { + err = Error(response.ErrorCode) + } + } if err != nil { return "", 0, nil, err } diff --git a/go.mod b/go.mod index c090d1b2..da2386b1 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/segmentio/kafka-go -go 1.23 +go 1.23.0 require ( github.com/klauspost/compress v1.15.9