@@ -4618,6 +4618,7 @@ def _query(self, host, message=None, cb=None):
46184618 self ._current_host = host
46194619
46204620 connection = None
4621+ request_id = None
46214622 try :
46224623 # TODO get connectTimeout from cluster settings
46234624 if self .query :
@@ -4642,16 +4643,25 @@ def _query(self, host, message=None, cb=None):
46424643 except ConnectionBusy as exc :
46434644 log .debug ("Connection for host %s is busy, moving to the next host" , host )
46444645 self ._errors [host ] = exc
4646+ if connection :
4647+ self ._return_connection_after_send_failure (pool , connection , request_id )
46454648 except Exception as exc :
46464649 log .debug ("Error querying host %s" , host , exc_info = True )
46474650 self ._errors [host ] = exc
46484651 if self ._metrics is not None :
46494652 self ._metrics .on_connection_error ()
46504653 if connection :
4651- pool . return_connection ( connection )
4654+ self . _return_connection_after_send_failure ( pool , connection , request_id )
46524655
46534656 return None
46544657
4658+ def _return_connection_after_send_failure (self , pool , connection , request_id ):
4659+ if request_id is not None :
4660+ with connection .lock :
4661+ if request_id not in connection ._requests and request_id not in connection .request_ids :
4662+ connection .request_ids .append (request_id )
4663+ pool .return_connection (connection )
4664+
46554665 @property
46564666 def has_more_pages (self ):
46574667 """
0 commit comments