@@ -965,47 +965,45 @@ def check_version(self, node_id=None, timeout=None, strict=False):
965
965
NoBrokersAvailable (if node_id is None)
966
966
"""
967
967
timeout = timeout or (self .config ['api_version_auto_timeout_ms' ] / 1000 )
968
- self ._lock .acquire ()
969
- end = time .time () + timeout
970
- while time .time () < end :
971
- time_remaining = max (end - time .time (), 0 )
972
- if node_id is not None and self .connection_delay (node_id ) > 0 :
973
- sleep_time = min (time_remaining , self .connection_delay (node_id ) / 1000.0 )
974
- if sleep_time > 0 :
975
- time .sleep (sleep_time )
976
- continue
977
- try_node = node_id or self .least_loaded_node ()
978
- if try_node is None :
979
- sleep_time = min (time_remaining , least_loaded_node_refresh_ms / 1000.0 )
980
- if sleep_time > 0 :
981
- log .warning ('No node available during check_version; sleeping %.2f secs' , sleep_time )
982
- time .sleep (sleep_time )
983
- continue
984
- log .debug ('Attempting to check version with node %s' , try_node )
985
- if not self ._init_connect (try_node ):
986
- if try_node == node_id :
987
- raise Errors .NodeNotReadyError ("Connection failed to %s" % node_id )
988
- else :
968
+ with self ._lock :
969
+ end = time .time () + timeout
970
+ while time .time () < end :
971
+ time_remaining = max (end - time .time (), 0 )
972
+ if node_id is not None and self .connection_delay (node_id ) > 0 :
973
+ sleep_time = min (time_remaining , self .connection_delay (node_id ) / 1000.0 )
974
+ if sleep_time > 0 :
975
+ time .sleep (sleep_time )
989
976
continue
990
- conn = self ._conns [try_node ]
991
-
992
- while not conn .disconnected () and conn ._api_version is None and time .time () < end :
993
- timeout_ms = min ((end - time .time ()) * 1000 , 200 )
994
- self .poll (timeout_ms = timeout_ms )
995
-
996
- if conn ._api_version is not None :
997
- self ._lock .release ()
998
- if not self ._api_versions :
999
- self ._api_versions = conn ._api_versions
1000
- return conn ._api_version
1001
-
1002
- # Timeout
1003
- else :
1004
- self ._lock .release ()
1005
- if node_id is not None :
1006
- raise Errors .NodeNotReadyError (node_id )
977
+ try_node = node_id or self .least_loaded_node ()
978
+ if try_node is None :
979
+ sleep_time = min (time_remaining , least_loaded_node_refresh_ms / 1000.0 )
980
+ if sleep_time > 0 :
981
+ log .warning ('No node available during check_version; sleeping %.2f secs' , sleep_time )
982
+ time .sleep (sleep_time )
983
+ continue
984
+ log .debug ('Attempting to check version with node %s' , try_node )
985
+ if not self ._init_connect (try_node ):
986
+ if try_node == node_id :
987
+ raise Errors .NodeNotReadyError ("Connection failed to %s" % node_id )
988
+ else :
989
+ continue
990
+ conn = self ._conns [try_node ]
991
+
992
+ while not conn .disconnected () and conn ._api_version is None and time .time () < end :
993
+ timeout_ms = min ((end - time .time ()) * 1000 , 200 )
994
+ self .poll (timeout_ms = timeout_ms )
995
+
996
+ if conn ._api_version is not None :
997
+ if not self ._api_versions :
998
+ self ._api_versions = conn ._api_versions
999
+ return conn ._api_version
1000
+
1001
+ # Timeout
1007
1002
else :
1008
- raise Errors .NoBrokersAvailable ()
1003
+ if node_id is not None :
1004
+ raise Errors .NodeNotReadyError (node_id )
1005
+ else :
1006
+ raise Errors .NoBrokersAvailable ()
1009
1007
1010
1008
def api_version (self , operation , max_version = None ):
1011
1009
"""Find the latest version of the protocol operation supported by both
0 commit comments