Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/admin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ use bytes::{Buf, BufMut, BytesMut};
use log::{info, trace};
use std::collections::HashMap;

use crate::config::{get_config, reload_config, VERSION};
use crate::config::{get_config, VERSION};
use crate::errors::Error;
use crate::messages::*;
use crate::pool::get_all_pools;
use crate::stats::get_stats;
use crate::ClientServerMap;
use crate::{messages::*, reload_config};

pub fn generate_server_info_for_admin() -> BytesMut {
let mut server_info = BytesMut::new();
Expand Down
23 changes: 0 additions & 23 deletions src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ use toml;

use crate::errors::Error;
use crate::tls::{load_certs, load_keys};
use crate::{ClientServerMap, ConnectionPool};

pub const VERSION: &str = env!("CARGO_PKG_VERSION");

Expand Down Expand Up @@ -525,28 +524,6 @@ pub async fn parse(path: &str) -> Result<(), Error> {
Ok(())
}

pub async fn reload_config(client_server_map: ClientServerMap) -> Result<bool, Error> {
let old_config = get_config();
match parse(&old_config.path).await {
Ok(()) => (),
Err(err) => {
error!("Config reload error: {:?}", err);
return Err(Error::BadConfig);
}
};
let new_config = get_config();

if old_config.pools != new_config.pools {
info!("Pool configuration changed, re-creating server pools");
ConnectionPool::from_config(client_server_map).await?;
Ok(true)
} else if old_config != new_config {
Ok(true)
} else {
Ok(false)
}
}

#[cfg(test)]
mod test {
use super::*;
Expand Down
26 changes: 25 additions & 1 deletion src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ extern crate tokio;
extern crate tokio_rustls;
extern crate toml;

use config::parse;
use log::{debug, error, info};
use parking_lot::Mutex;
use tokio::net::TcpListener;
Expand Down Expand Up @@ -65,7 +66,8 @@ mod sharding;
mod stats;
mod tls;

use crate::config::{get_config, reload_config, VERSION};
use crate::config::{get_config, VERSION};
use crate::errors::Error;
use crate::pool::{ClientServerMap, ConnectionPool};
use crate::prometheus::start_metric_server;
use crate::stats::{Collector, Reporter, REPORTER};
Expand Down Expand Up @@ -340,3 +342,25 @@ fn format_duration(duration: &chrono::Duration) -> String {

format!("{}d {}:{}:{}", days, hours, minutes, seconds)
}

async fn reload_config(client_server_map: ClientServerMap) -> Result<bool, Error> {
let old_config = get_config();
match parse(&old_config.path).await {
Ok(()) => (),
Err(err) => {
error!("Config reload error: {:?}", err);
return Err(Error::BadConfig);
}
};
let new_config = get_config();

if old_config.pools != new_config.pools {
info!("Pool configuration changed, re-creating server pools");
ConnectionPool::from_config(client_server_map).await?;
Ok(true)
} else if old_config != new_config {
Ok(true)
} else {
Ok(false)
}
}