Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

When monitoring idle connections, only call eof on tcp socket #912

Merged
merged 2 commits into from
Aug 25, 2022

Commits on Aug 24, 2022

  1. When monitoring idle connections, only call eof on tcp socket

    In a heavy cloud storage workflow, I encountered the following error:
    
    ```
    AssertionError: ctx.bytesavailable > 0 || !(ctx.isreadable)
    ```
    with traces back to calling `eof(::SSLContext)` from `monitor_idle_connection`.
    
    As the workflow was highly concurrent, I believe the error was just a data race
    between an old async `monitor_idle_connection` task calling `eof` -> `wait_for_decrypted_data`,
    but when returning from `wait_for_decrypted_data` due to a new connection being reused in HTTP.jl,
    the `handshake` was redone, which resulted in the `AssertionError` shown above.
    
    The proposal here is that when monitoring idle connections, we only call `eof` on the underlying
    TCPSocket, since we're really only concerned with knowing whether the core socket gets additional
    data, encrypted or not, when we don't expect it.
    quinnj committed Aug 24, 2022
    Configuration menu
    Copy the full SHA
    f013ddf View commit details
    Browse the repository at this point in the history

Commits on Aug 25, 2022

  1. simplify

    quinnj committed Aug 25, 2022
    Configuration menu
    Copy the full SHA
    e8d6864 View commit details
    Browse the repository at this point in the history