Skip to content

Commit 3664ae8

Browse files
authored
lock client.check_version (#1771)
1 parent b1effa2 commit 3664ae8

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

kafka/client_async.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -845,13 +845,15 @@ def check_version(self, node_id=None, timeout=2, strict=False):
845845
UnrecognizedBrokerVersion: please file bug if seen!
846846
AssertionError (if strict=True): please file bug if seen!
847847
"""
848+
self._lock.acquire()
848849
end = time.time() + timeout
849850
while time.time() < end:
850851

851852
# It is possible that least_loaded_node falls back to bootstrap,
852853
# which can block for an increasing backoff period
853854
try_node = node_id or self.least_loaded_node()
854855
if try_node is None:
856+
self._lock.release()
855857
raise Errors.NoBrokersAvailable()
856858
self._maybe_connect(try_node)
857859
conn = self._conns[try_node]
@@ -866,16 +868,19 @@ def check_version(self, node_id=None, timeout=2, strict=False):
866868
# cache the api versions map if it's available (starting
867869
# in 0.10 cluster version)
868870
self._api_versions = conn.get_api_versions()
871+
self._lock.release()
869872
return version
870873
except Errors.NodeNotReadyError:
871874
# Only raise to user if this is a node-specific request
872875
if node_id is not None:
876+
self._lock.release()
873877
raise
874878
finally:
875879
self._refresh_on_disconnects = True
876880

877881
# Timeout
878882
else:
883+
self._lock.release()
879884
raise Errors.NoBrokersAvailable()
880885

881886
def wakeup(self):

0 commit comments

Comments
 (0)