-
-
Notifications
You must be signed in to change notification settings - Fork 62
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
Unable to connect to AWS Aurora MySQL 3.04.0 (MySQL 8.0.28) over TLS #129
Comments
It looks like the server side is complaining of a bad handshake from the client.
|
It looks like EventLoop::queue(function () use ($payload): void {
try {
$this->write(\implode($payload));
$this->socket->setupTls();
$this->sendHandshake(true);
} catch (\Throwable $e) {
$this->free($e);
}
}); |
It looks like we end up hanging forever because while (true) {
$cancellation->throwIfRequested();
$suspension = EventLoop::getSuspension();
// Watcher is guaranteed to be created, because we throw above if cancellation has already been requested
$cancellationId = $cancellation->subscribe(static function ($e) use ($suspension, &$callbackId): void {
EventLoop::cancel($callbackId);
$suspension->throw($e);
});
$callbackId = EventLoop::onReadable($socket, static function () use (
$suspension,
$cancellation,
$cancellationId,
): void {
$cancellation->unsubscribe($cancellationId);
$suspension->resume();
});
try {
$suspension->suspend();
} finally {
EventLoop::cancel($callbackId);
}
try {
\set_error_handler($errorHandler);
$result = \stream_socket_enable_crypto($socket, enable: true);
if ($result === false) {
$message = \feof($socket) ? 'Connection reset by peer' : 'Unknown error';
throw new TlsException('TLS negotiation failed: ' . $message);
}
} finally {
\restore_error_handler();
}
// If $result is 0, just wait for the next invocation
if ($result === true) {
break;
}
} |
@bwoebi Do you have any idea what might be going on here with TLS? |
@GrahamCampbell I realize it's been quite some time since you opened this issue, but would you be able to try again with the latest |
Code to make the connection pool:
Then, the folowing code hangs forever trying to establish a connection, despite the default connect timeout being 10 seconds.
Digging into the code, we're getting stuck at:
on line 243 of
Amp\Sql\CommonConnectionPool
.Digging further, it's the call to
Amp\Mysql\SocketMysqlConnection::initialize
which is hanging. Indeed, the$future->await()
call on line 228 ofAmp\Mysql\Internal\ConnectionProcessor::connect
.Installed versions:
The text was updated successfully, but these errors were encountered: