mirror of
https://github.com/rustfs/rustfs.git
synced 2026-09-04 11:15:39 +00:00
feat(targets): add check_mysql_server_available probe function (#2884)
Signed-off-by: JaySon-Huang <tshent@qq.com> Co-authored-by: houseme <housemecn@gmail.com>
This commit is contained in:
@@ -304,16 +304,6 @@ fn is_valid_identifier_segment(segment: &str) -> bool {
|
||||
true
|
||||
}
|
||||
|
||||
fn ensure_rustls_provider_installed() {
|
||||
if rustls::crypto::CryptoProvider::get_default().is_some() {
|
||||
return;
|
||||
}
|
||||
|
||||
if let Err(err) = rustls::crypto::aws_lc_rs::default_provider().install_default() {
|
||||
debug!("rustls provider already installed or unavailable for mysql target: {err:?}");
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn validate_table_name(table: &str) -> Result<(), TargetError> {
|
||||
let table = table.trim();
|
||||
|
||||
@@ -571,7 +561,7 @@ where
|
||||
.db_name(Some(dsn.database.clone()));
|
||||
|
||||
if dsn.tls {
|
||||
ensure_rustls_provider_installed();
|
||||
super::ensure_rustls_provider_installed();
|
||||
let mut ssl_opts = SslOpts::default();
|
||||
if !self.args.tls_ca.is_empty() {
|
||||
ssl_opts = ssl_opts.with_root_certs(vec![PathBuf::from(self.args.tls_ca.clone()).into()]);
|
||||
@@ -666,7 +656,7 @@ where
|
||||
|
||||
conn.exec_drop(sql, (event_time.as_str(), event_data))
|
||||
.await
|
||||
.map_err(map_mysql_error)?;
|
||||
.map_err(|err| map_mysql_error(err, "Failed to insert event"))?;
|
||||
|
||||
self.delivery_counters.record_success();
|
||||
debug!(target_id = %self.id, "MySQL event inserted");
|
||||
@@ -690,16 +680,16 @@ where
|
||||
/// - `Server(1213|1205|1040)` → `Timeout` (deadlock/lock timeout/too
|
||||
/// many connections, exponential-backoff retry)
|
||||
/// - everything else → `Request` (permanent failure)
|
||||
fn map_mysql_error(err: mysql_async::Error) -> TargetError {
|
||||
pub(crate) fn map_mysql_error(err: mysql_async::Error, operation: &str) -> TargetError {
|
||||
match &err {
|
||||
mysql_async::Error::Io(_) | mysql_async::Error::Driver(_) => TargetError::NotConnected,
|
||||
mysql_async::Error::Server(server_err) => match server_err.code {
|
||||
1213 | 1205 | 1040 => {
|
||||
TargetError::Timeout(format!("MySQL transient server error {}: {}", server_err.code, server_err.message))
|
||||
}
|
||||
_ => TargetError::Request(format!("Failed to insert event: {err}")),
|
||||
_ => TargetError::Request(format!("{operation}: {err}")),
|
||||
},
|
||||
_ => TargetError::Request(format!("Failed to insert event: {err}")),
|
||||
_ => TargetError::Request(format!("{operation}: {err}")),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user