Skip to content

Commit 0efe08b

Browse files
committed
kafka.conn: Improve error handling for sasl authenticate mechanisms
1 parent 74400d7 commit 0efe08b

1 file changed

Lines changed: 10 additions & 7 deletions

File tree

kafka/conn.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -700,9 +700,12 @@ def _handle_sasl_handshake_response(self, future, response):
700700
'Kafka broker does not support %s sasl mechanism. Enabled mechanisms are: %s'
701701
% (self.config['sasl_mechanism'], response.enabled_mechanisms)))
702702
else:
703-
self._sasl_authenticate(future)
703+
try:
704+
ret = self._sasl_authenticate()
705+
future.success(ret)
706+
except Exception as exc:
707+
future.failure(exc)
704708

705-
assert future.is_done, 'SASL future not complete after mechanism processing!'
706709
if future.failed():
707710
self.close(error=future.exception)
708711
else:
@@ -814,24 +817,24 @@ def _recv_sasl_authenticate(self):
814817
log.debug('%s: Received %d raw sasl auth bytes from server', self, nbytes)
815818
return data[4:]
816819

817-
def _sasl_authenticate(self, future):
820+
def _sasl_authenticate(self):
818821
while not self._sasl_mechanism.is_done():
819822
send_token = self._sasl_mechanism.auth_bytes()
820823
self._send_sasl_authenticate(send_token)
821824
if not self._can_send_recv():
822-
return future.failure(Errors.KafkaConnectionError("%s: Connection failure during Sasl Authenticate" % self))
825+
raise Errors.KafkaConnectionError("%s: Connection failure during Sasl Authenticate" % self)
823826

824827
recv_token = self._recv_sasl_authenticate()
825828
if recv_token is None:
826-
return future.failure(Errors.KafkaConnectionError("%s: Connection failure during Sasl Authenticate" % self))
829+
raise Errors.KafkaConnectionError("%s: Connection failure during Sasl Authenticate" % self)
827830
else:
828831
self._sasl_mechanism.receive(recv_token)
829832

830833
if self._sasl_mechanism.is_authenticated():
831834
log.info('%s: %s', self, self._sasl_mechanism.auth_details())
832-
return future.success(True)
835+
return True
833836
else:
834-
return future.failure(Errors.SaslAuthenticationFailedError('Failed to authenticate via SASL %s' % self.config['sasl_mechanism']))
837+
raise Errors.SaslAuthenticationFailedError('Failed to authenticate via SASL %s' % self.config['sasl_mechanism'])
835838

836839
def blacked_out(self):
837840
"""

0 commit comments

Comments
 (0)