in squangle/mysql_client/Operation.cpp [795:823]
void ConnectOperation::logConnectCompleted(OperationResult result) {
// If the connection wasn't initialized, it's because the operation
// was cancelled before anything started, so we don't do the logs
if (!conn()->hasInitialized()) {
return;
}
auto elapsed = std::chrono::duration_cast<std::chrono::microseconds>(
end_time_ - start_time_);
if (result == OperationResult::Succeeded) {
client()->logConnectionSuccess(
db::CommonLoggingData(getOperationType(), elapsed),
*conn()->getKey(),
connection_context_.get());
} else {
db::FailureReason reason = db::FailureReason::DATABASE_ERROR;
if (result == OperationResult::TimedOut) {
reason = db::FailureReason::TIMEOUT;
} else if (result == OperationResult::Cancelled) {
reason = db::FailureReason::CANCELLED;
}
client()->logConnectionFailure(
db::CommonLoggingData(getOperationType(), elapsed),
reason,
*conn()->getKey(),
mysql_errno(),
mysql_error(),
connection_context_.get());
}
}