Uploaded image for project: 'Kafka'
  1. Kafka
  2. KAFKA-8332

Regression in handling of JoinGroupRequest disallows deterministic protocol selection based on order of preference

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Blocker
    • Resolution: Fixed
    • None
    • 2.3.0
    • core
    • None

    Description

      When a group of Kafka clients includes more than one embedded protocol in its JoinGroupRequest along with its metadata, the group membership protocol defines that the protocol which is supported by all the members of a group is selected, and if more than one protocols are supported by all the members the protocol is selected based on the order of preference as defined in the JoinGroupRequest

      A recent change from type List to type Set for storing the set of supported embedded protocols in the JoinGroupRequest combined with the old type of handling with implicit types in the scala code, has introduced non-determinism in the selection of the embedded protocol by the GroupCoordinator, even though the underlying type of the Set in use is a variant of LinkedHashSet (it respects order). 

      The relevant code is: 

      // KafkaApis.scala
      val protocols = joinGroupRequest.data().protocols().asScala.map(protocol =>
      	(protocol.name, protocol.metadata)).toList
      

       

      Attachments

        Activity

          People

            bob-barrett Bob Barrett
            kkonstantine Konstantine Karantasis
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: