@@ -1005,17 +1005,19 @@ def check_version(self, node_id=None, timeout=None, strict=False):
1005
1005
self ._lock .acquire ()
1006
1006
end = time .time () + timeout
1007
1007
while time .time () < end :
1008
+ time_remaining = max (end - time .time (), 0 )
1009
+ if node_id is not None and self .connection_delay (node_id ) > 0 :
1010
+ sleep_time = min (time_remaining , self .connection_delay (node_id ) / 1000.0 )
1011
+ if sleep_time > 0 :
1012
+ time .sleep (sleep_time )
1013
+ continue
1008
1014
try_node = node_id or self .least_loaded_node ()
1009
1015
if try_node is None :
1010
- time_remaining = end - time .time ()
1011
- if time_remaining <= 0 :
1012
- self ._lock .release ()
1013
- raise Errors .NoBrokersAvailable ()
1014
- else :
1015
- sleep_time = min (time_remaining , least_loaded_node_refresh_ms / 1000 )
1016
+ sleep_time = min (time_remaining , least_loaded_node_refresh_ms / 1000.0 )
1017
+ if sleep_time > 0 :
1016
1018
log .warning ('No node available during check_version; sleeping %.2f secs' , sleep_time )
1017
1019
time .sleep (sleep_time )
1018
- continue
1020
+ continue
1019
1021
log .debug ('Attempting to check version with node %s' , try_node )
1020
1022
if not self ._init_connect (try_node ):
1021
1023
if try_node == node_id :
@@ -1037,7 +1039,10 @@ def check_version(self, node_id=None, timeout=None, strict=False):
1037
1039
# Timeout
1038
1040
else :
1039
1041
self ._lock .release ()
1040
- raise Errors .NoBrokersAvailable ()
1042
+ if node_id is not None :
1043
+ raise Errors .NodeNotReadyError (node_id )
1044
+ else :
1045
+ raise Errors .NoBrokersAvailable ()
1041
1046
1042
1047
def api_version (self , operation , max_version = None ):
1043
1048
"""Find the latest version of the protocol operation supported by both
0 commit comments