diff --git a/src/config.rs b/src/config.rs index 0e4b8c7d..dc915d57 100644 --- a/src/config.rs +++ b/src/config.rs @@ -547,6 +547,9 @@ pub struct Pool { #[serde(default = "Pool::default_cleanup_server_connections")] pub cleanup_server_connections: bool, + #[serde(default)] // False + pub log_client_parameter_status_changes: bool, + pub plugins: Option, pub shards: BTreeMap, pub users: BTreeMap, @@ -696,6 +699,7 @@ impl Default for Pool { server_lifetime: None, plugins: None, cleanup_server_connections: true, + log_client_parameter_status_changes: false, } } } @@ -1157,6 +1161,10 @@ impl Config { "[pool: {}] Cleanup server connections: {}", pool_name, pool_config.cleanup_server_connections ); + info!( + "[pool: {}] Log client parameter status changes: {}", + pool_name, pool_config.log_client_parameter_status_changes + ); info!( "[pool: {}] Plugins: {}", pool_name, diff --git a/src/mirrors.rs b/src/mirrors.rs index 7922e6f8..90bcd355 100644 --- a/src/mirrors.rs +++ b/src/mirrors.rs @@ -41,6 +41,7 @@ impl MirroredClient { Arc::new(RwLock::new(None)), None, true, + false, ); Pool::builder() diff --git a/src/pool.rs b/src/pool.rs index b3627448..7e110ce2 100644 --- a/src/pool.rs +++ b/src/pool.rs @@ -371,6 +371,7 @@ impl ConnectionPool { None => config.plugins.clone(), }, pool_config.cleanup_server_connections, + pool_config.log_client_parameter_status_changes, ); let connect_timeout = match pool_config.connect_timeout { @@ -956,6 +957,9 @@ pub struct ServerPool { /// Should we clean up dirty connections before putting them into the pool? cleanup_connections: bool, + + /// Log client parameter status changes + log_client_parameter_status_changes: bool, } impl ServerPool { @@ -967,6 +971,7 @@ impl ServerPool { auth_hash: Arc>>, plugins: Option, cleanup_connections: bool, + log_client_parameter_status_changes: bool, ) -> ServerPool { ServerPool { address, @@ -976,6 +981,7 @@ impl ServerPool { auth_hash, plugins, cleanup_connections, + log_client_parameter_status_changes, } } } @@ -1005,6 +1011,7 @@ impl ManageConnection for ServerPool { stats.clone(), self.auth_hash.clone(), self.cleanup_connections, + self.log_client_parameter_status_changes, ) .await { diff --git a/src/server.rs b/src/server.rs index b006e77b..47630efa 100644 --- a/src/server.rs +++ b/src/server.rs @@ -322,6 +322,9 @@ pub struct Server { /// Should clean up dirty connections? cleanup_connections: bool, + /// Log client parameter status changes + log_client_parameter_status_changes: bool, + /// Prepared statements prepared_statements: BTreeSet, } @@ -337,6 +340,7 @@ impl Server { stats: Arc, auth_hash: Arc>>, cleanup_connections: bool, + log_client_parameter_status_changes: bool, ) -> Result { let cached_resolver = CACHED_RESOLVER.load(); let mut addr_set: Option = None; @@ -825,6 +829,7 @@ impl Server { )), }, cleanup_connections, + log_client_parameter_status_changes, prepared_statements: BTreeSet::new(), }; @@ -1009,6 +1014,9 @@ impl Server { if let Some(client_server_parameters) = client_server_parameters.as_mut() { client_server_parameters.set_param(key.clone(), value.clone(), false); + if self.log_client_parameter_status_changes { + info!("Client parameter status change: {} = {}", key, value) + } } self.server_parameters.set_param(key, value, false); @@ -1373,6 +1381,7 @@ impl Server { Arc::new(ServerStats::default()), Arc::new(RwLock::new(None)), true, + false, ) .await?; debug!("Connected!, sending query.");