Skip to content
  • Alexander Nozdrin's avatar
    01038fd6
    A patch for Bug#17087862: THREAD POOL PLUGIN FAILS TO MAINTAIN · 01038fd6
    Alexander Nozdrin authored
    ENCRYPTED CONNECTION UNDER LOAD.
    
    The user visible problem was that an error in one connection might
    have affected other connections. When that happened, the other
    connection was closed by the server, thus the client received the
    "Lost connection" error. The server however didn't crash.
    
    Technically, the problem was that OpenSSL requires that the thread's
    error queue is empty before invoking any I/O operation
    (https://www.openssl.org/docs/ssl/SSL_get_error.html).
    That was not the case. The bug happened when the error queue is not
    empty and a non-blocking I/O-operation failed because it would block.
    
    YaSSL is not affected as it employs different scheme for handling
    errors.
    
    MySQL-5.5 is not affected as it uses blocking I/O calls.
    
    Test case is missing because the bug appeared under the highload and
    depended on thread scheduling.
    01038fd6
    A patch for Bug#17087862: THREAD POOL PLUGIN FAILS TO MAINTAIN
    Alexander Nozdrin authored
    ENCRYPTED CONNECTION UNDER LOAD.
    
    The user visible problem was that an error in one connection might
    have affected other connections. When that happened, the other
    connection was closed by the server, thus the client received the
    "Lost connection" error. The server however didn't crash.
    
    Technically, the problem was that OpenSSL requires that the thread's
    error queue is empty before invoking any I/O operation
    (https://www.openssl.org/docs/ssl/SSL_get_error.html).
    That was not the case. The bug happened when the error queue is not
    empty and a non-blocking I/O-operation failed because it would block.
    
    YaSSL is not affected as it employs different scheme for handling
    errors.
    
    MySQL-5.5 is not affected as it uses blocking I/O calls.
    
    Test case is missing because the bug appeared under the highload and
    depended on thread scheduling.
Loading