• Alexandru Gheorghe's avatar
    Fix next_retry busy waiting on first retry (#4192) · 0e552893
    Alexandru Gheorghe authored
    
    
    The `next_retry_time` gets populated when a request receives an error
    timeout or any other error, after thatn next_retry would check all
    requests in the queue returns the smallest one, which then gets used to
    move the main loop by creating a Delay
    ```
    futures_timer::Delay::new(instant.saturating_duration_since(Instant::now())).await,
    ```
    
    However when we retry a task for the first time we still keep it in the
    queue an mark it as in flight so its next_retry_time would be the oldest
    and it would be small than `now`, so the Delay will always triggers, so
    that would make the main loop essentially busy wait untill we received a
    response for the retry request.
    
    Fix this by excluding the tasks that are already in-flight.
    
    ---------
    
    Signed-off-by: default avatarAlexandru Gheorghe <[email protected]>
    Co-authored-by: default avatarAndrei Sandu <[email protected]>
    0e552893