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

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

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Blocker
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.3.0
    • Component/s: core
    • Labels:
      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

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

              Dates

              • Created:
                Updated:
                Resolved: