-
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.
Alexander Nozdrin authoredENCRYPTED 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