refactor: split server storage creation out from startup
Closes kemitix/git-next#75
This commit is contained in:
parent
9c20e780d0
commit
4276964f4d
3 changed files with 25 additions and 22 deletions
|
@ -354,7 +354,7 @@ async fn should_reject_message_with_expired_token() -> TestResult {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test_log::test(actix::test)]
|
#[test_log::test(actix::test)]
|
||||||
// NOTE: failed then passed on retry: count = 2
|
// NOTE: failed then passed on retry: count = 3
|
||||||
async fn should_send_validate_repo_when_retryable_error() -> TestResult {
|
async fn should_send_validate_repo_when_retryable_error() -> TestResult {
|
||||||
//given
|
//given
|
||||||
let fs = given::a_filesystem();
|
let fs = given::a_filesystem();
|
||||||
|
|
|
@ -65,7 +65,6 @@ impl Handler<FileUpdated> for Server {
|
||||||
impl Handler<ReceiveServerConfig> for Server {
|
impl Handler<ReceiveServerConfig> for Server {
|
||||||
type Result = ();
|
type Result = ();
|
||||||
|
|
||||||
#[allow(clippy::cognitive_complexity)] // TODO: (#75) reduce complexity
|
|
||||||
fn handle(&mut self, msg: ReceiveServerConfig, _ctx: &mut Self::Context) -> Self::Result {
|
fn handle(&mut self, msg: ReceiveServerConfig, _ctx: &mut Self::Context) -> Self::Result {
|
||||||
let Ok(socket_addr) = msg.http() else {
|
let Ok(socket_addr) = msg.http() else {
|
||||||
warn!("Unable to parse http.addr");
|
warn!("Unable to parse http.addr");
|
||||||
|
@ -76,27 +75,9 @@ impl Handler<ReceiveServerConfig> for Server {
|
||||||
}
|
}
|
||||||
self.generation.inc();
|
self.generation.inc();
|
||||||
let server_config = msg;
|
let server_config = msg;
|
||||||
// Server Storage
|
let Some(server_storage) = self.server_storage(&server_config) else {
|
||||||
let dir = server_config.storage().path();
|
|
||||||
if !dir.exists() {
|
|
||||||
info!(?dir, "server storage doesn't exist - creating it");
|
|
||||||
if let Err(err) = self.fs.dir_create(dir) {
|
|
||||||
error!(?err, ?dir, "Failed to create server storage");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let Ok(canon) = dir.canonicalize() else {
|
|
||||||
error!(?dir, "Failed to confirm server storage");
|
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
info!(dir = ?canon, "server storage");
|
|
||||||
|
|
||||||
// Forge directories in Server Storage
|
|
||||||
let server_storage = server_config.storage();
|
|
||||||
if let Err(err) = self.create_forge_data_directories(&server_config, dir) {
|
|
||||||
error!(?err, "Failure creating forge storage");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Webhook Server
|
// Webhook Server
|
||||||
info!("Starting Webhook Server...");
|
info!("Starting Webhook Server...");
|
||||||
|
@ -247,4 +228,27 @@ impl Server {
|
||||||
info!("Started");
|
info!("Started");
|
||||||
(repo_alias, addr)
|
(repo_alias, addr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn server_storage<'cfg>(
|
||||||
|
&self,
|
||||||
|
server_config: &'cfg ReceiveServerConfig,
|
||||||
|
) -> Option<&'cfg ServerStorage> {
|
||||||
|
let server_storage = server_config.storage();
|
||||||
|
let dir = server_storage.path();
|
||||||
|
if !dir.exists() {
|
||||||
|
if let Err(err) = self.fs.dir_create(dir) {
|
||||||
|
error!(?err, ?dir, "Failed to create server storage");
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let Ok(canon) = dir.canonicalize() else {
|
||||||
|
error!(?dir, "Failed to confirm server storage");
|
||||||
|
return None;
|
||||||
|
};
|
||||||
|
if let Err(err) = self.create_forge_data_directories(server_config, &canon) {
|
||||||
|
error!(?err, "Failure creating forge storage");
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
Some(server_storage)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,6 @@ pub fn start(
|
||||||
|
|
||||||
info!("Starting Server...");
|
info!("Starting Server...");
|
||||||
let execution = async move {
|
let execution = async move {
|
||||||
//-
|
|
||||||
let server = Server::new(fs.clone(), net.clone(), repo, sleep_duration).start();
|
let server = Server::new(fs.clone(), net.clone(), repo, sleep_duration).start();
|
||||||
server.do_send(FileUpdated);
|
server.do_send(FileUpdated);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue