55from kafka .coordinator .assignors .abstract import AbstractPartitionAssignor
66from kafka .coordinator .assignors .sticky .partition_movements import PartitionMovements
77from kafka .coordinator .assignors .sticky .sorted_set import SortedSet
8- from kafka .coordinator .protocol import ConsumerProtocolMemberMetadata , ConsumerProtocolMemberAssignment
8+ from kafka .coordinator .protocol import ConsumerProtocolMemberMetadata_v0 , ConsumerProtocolMemberAssignment_v0
99from kafka .coordinator .protocol import Schema
1010from kafka .protocol .struct import Struct
1111from kafka .protocol .types import String , Array , Int32
@@ -66,6 +66,7 @@ class StickyAssignorUserDataV1(Struct):
6666
6767class StickyAssignmentExecutor :
6868 def __init__ (self , cluster , members ):
69+ # a mapping of member_id => StickyAssignorMemberMetadataV1
6970 self .members = members
7071 # a mapping between consumers and their assigned partitions that is updated during assignment procedure
7172 self .current_assignment = defaultdict (list )
@@ -603,7 +604,7 @@ def assign(cls, cluster, members):
603604
604605 assignment = {}
605606 for member_id in members :
606- assignment [member_id ] = ConsumerProtocolMemberAssignment (
607+ assignment [member_id ] = ConsumerProtocolMemberAssignment_v0 (
607608 cls .version , sorted (executor .get_final_assignment (member_id )), b''
608609 )
609610 return assignment
@@ -625,24 +626,24 @@ def parse_member_metadata(cls, metadata):
625626 user_data = metadata .user_data
626627 if not user_data :
627628 return StickyAssignorMemberMetadataV1 (
628- partitions = [], generation = cls .DEFAULT_GENERATION_ID , subscription = metadata .subscription
629+ partitions = [], generation = cls .DEFAULT_GENERATION_ID , subscription = metadata .topics
629630 )
630631
631632 try :
632633 decoded_user_data = StickyAssignorUserDataV1 .decode (user_data )
633- except Exception as e :
634+ except Exception :
634635 # ignore the consumer's previous assignment if it cannot be parsed
635- log .error ("Could not parse member data" , e ) # pylint: disable=logging-too-many-args
636+ log .exception ("Could not parse member data" )
636637 return StickyAssignorMemberMetadataV1 (
637- partitions = [], generation = cls .DEFAULT_GENERATION_ID , subscription = metadata .subscription
638+ partitions = [], generation = cls .DEFAULT_GENERATION_ID , subscription = metadata .topics
638639 )
639640
640641 member_partitions = []
641642 for topic , partitions in decoded_user_data .previous_assignment : # pylint: disable=no-member
642643 member_partitions .extend ([TopicPartition (topic , partition ) for partition in partitions ])
643644 return StickyAssignorMemberMetadataV1 (
644645 # pylint: disable=no-member
645- partitions = member_partitions , generation = decoded_user_data .generation , subscription = metadata .subscription
646+ partitions = member_partitions , generation = decoded_user_data .generation , subscription = metadata .topics
646647 )
647648
648649 @classmethod
@@ -661,7 +662,7 @@ def _metadata(cls, topics, member_assignment_partitions, generation=-1):
661662 partitions_by_topic [topic_partition .topic ].append (topic_partition .partition )
662663 data = StickyAssignorUserDataV1 (list (partitions_by_topic .items ()), generation )
663664 user_data = data .encode ()
664- return ConsumerProtocolMemberMetadata (cls .version , list (topics ), user_data )
665+ return ConsumerProtocolMemberMetadata_v0 (cls .version , list (topics ), user_data )
665666
666667 @classmethod
667668 def on_assignment (cls , assignment ):
0 commit comments