@@ -452,25 +452,18 @@ def _send_join_group_request(self):
452452 (protocol , metadata if isinstance (metadata , bytes ) else metadata .encode ())
453453 for protocol , metadata in self .group_protocols ()
454454 ]
455- if self .config ['api_version' ] < (0 , 9 ):
455+ version = self ._client .api_version (JoinGroupRequest , max_version = 2 )
456+ if not version :
456457 raise Errors .KafkaError ('JoinGroupRequest api requires 0.9+ brokers' )
457- elif ( 0 , 9 ) <= self . config [ 'api_version' ] < ( 0 , 10 , 1 ) :
458- request = JoinGroupRequest [0 ](
458+ elif version == 0 :
459+ request = JoinGroupRequest [version ](
459460 self .group_id ,
460461 self .config ['session_timeout_ms' ],
461462 self ._generation .member_id ,
462463 self .protocol_type (),
463464 member_metadata )
464- elif (0 , 10 , 1 ) <= self .config ['api_version' ] < (0 , 11 ):
465- request = JoinGroupRequest [1 ](
466- self .group_id ,
467- self .config ['session_timeout_ms' ],
468- self .config ['max_poll_interval_ms' ],
469- self ._generation .member_id ,
470- self .protocol_type (),
471- member_metadata )
472465 else :
473- request = JoinGroupRequest [2 ](
466+ request = JoinGroupRequest [version ](
474467 self .group_id ,
475468 self .config ['session_timeout_ms' ],
476469 self .config ['max_poll_interval_ms' ],
@@ -562,7 +555,7 @@ def _handle_join_group_response(self, future, send_time, response):
562555
563556 def _on_join_follower (self ):
564557 # send follower's sync group with an empty assignment
565- version = 0 if self .config [ ' api_version' ] < ( 0 , 11 ) else 1
558+ version = self ._client . api_version ( SyncGroupRequest , max_version = 1 )
566559 request = SyncGroupRequest [version ](
567560 self .group_id ,
568561 self ._generation .generation_id ,
@@ -590,7 +583,7 @@ def _on_join_leader(self, response):
590583 except Exception as e :
591584 return Future ().failure (e )
592585
593- version = 0 if self .config [ ' api_version' ] < ( 0 , 11 ) else 1
586+ version = self ._client . api_version ( SyncGroupRequest , max_version = 1 )
594587 request = SyncGroupRequest [version ](
595588 self .group_id ,
596589 self ._generation .generation_id ,
@@ -744,7 +737,7 @@ def _start_heartbeat_thread(self):
744737 self ._heartbeat_thread .start ()
745738
746739 def _close_heartbeat_thread (self ):
747- if self ._heartbeat_thread is not None :
740+ if hasattr ( self , '_heartbeat_thread' ) and self ._heartbeat_thread is not None :
748741 log .info ('Stopping heartbeat thread' )
749742 try :
750743 self ._heartbeat_thread .close ()
@@ -771,7 +764,7 @@ def maybe_leave_group(self):
771764 # this is a minimal effort attempt to leave the group. we do not
772765 # attempt any resending if the request fails or times out.
773766 log .info ('Leaving consumer group (%s).' , self .group_id )
774- version = 0 if self .config [ ' api_version' ] < ( 0 , 11 ) else 1
767+ version = self ._client . api_version ( LeaveGroupRequest , max_version = 1 )
775768 request = LeaveGroupRequest [version ](self .group_id , self ._generation .member_id )
776769 future = self ._client .send (self .coordinator_id , request )
777770 future .add_callback (self ._handle_leave_group_response )
@@ -799,7 +792,7 @@ def _send_heartbeat_request(self):
799792 e = Errors .NodeNotReadyError (self .coordinator_id )
800793 return Future ().failure (e )
801794
802- version = 0 if self .config [ ' api_version' ] < ( 0 , 11 ) else 1
795+ version = self ._client . api_version ( HeartbeatRequest , max_version = 1 )
803796 request = HeartbeatRequest [version ](self .group_id ,
804797 self ._generation .generation_id ,
805798 self ._generation .member_id )
0 commit comments