@@ -970,17 +970,19 @@ def check_version(self, node_id=None, timeout=None, strict=False):
970
970
self ._lock .acquire ()
971
971
end = time .time () + timeout
972
972
while time .time () < end :
973
+ time_remaining = max (end - time .time (), 0 )
974
+ if node_id is not None and self .connection_delay (node_id ) > 0 :
975
+ sleep_time = min (time_remaining , self .connection_delay (node_id ) / 1000.0 )
976
+ if sleep_time > 0 :
977
+ time .sleep (sleep_time )
978
+ continue
973
979
try_node = node_id or self .least_loaded_node ()
974
980
if try_node is None :
975
- time_remaining = end - time .time ()
976
- if time_remaining <= 0 :
977
- self ._lock .release ()
978
- raise Errors .NoBrokersAvailable ()
979
- else :
980
- sleep_time = min (time_remaining , least_loaded_node_refresh_ms / 1000 )
981
+ sleep_time = min (time_remaining , least_loaded_node_refresh_ms / 1000.0 )
982
+ if sleep_time > 0 :
981
983
log .warning ('No node available during check_version; sleeping %.2f secs' , sleep_time )
982
984
time .sleep (sleep_time )
983
- continue
985
+ continue
984
986
log .debug ('Attempting to check version with node %s' , try_node )
985
987
if not self ._maybe_connect (try_node ):
986
988
if try_node == node_id :
@@ -1002,7 +1004,10 @@ def check_version(self, node_id=None, timeout=None, strict=False):
1002
1004
# Timeout
1003
1005
else :
1004
1006
self ._lock .release ()
1005
- raise Errors .NoBrokersAvailable ()
1007
+ if node_id is not None :
1008
+ raise Errors .NodeNotReadyError (node_id )
1009
+ else :
1010
+ raise Errors .NoBrokersAvailable ()
1006
1011
1007
1012
def api_version (self , operation , max_version = None ):
1008
1013
"""Find the latest version of the protocol operation supported by both
0 commit comments