Skip to content

Commit

Permalink
feat: refactor node service
Browse files Browse the repository at this point in the history
  • Loading branch information
JasonPaulGithub committed Apr 17, 2024
1 parent 840af8d commit e8f5fba
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 23 deletions.
45 changes: 27 additions & 18 deletions sn_node_manager/src/bin/daemon/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,33 @@ impl SafeNodeManager for SafeNodeManagerDaemon {
let peer_id = PeerId::from_bytes(&request.get_ref().peer_id)
.map_err(|err| Status::new(Code::Internal, format!("Failed to parse PeerId: {err}")))?;

Self::restart_handler(node_registry, peer_id, request.get_ref().retain_peer_id)
.await
.map_err(|err| {
Status::new(Code::Internal, format!("Failed to restart the node: {err}"))
})?;
match rpc::restart_node_service(
node_registry.clone(),
peer_id,
request.get_ref().retain_peer_id,
)
.await
{
Ok(_) => {
node_registry.save().map_err(|err| {
Status::new(
Code::DataLoss,
format!("Critical: Failed to save to the node registry {err}"),
)
})?;
}
Err(_) => {
node_registry.save().map_err(|err| {
Status::new(
Code::DataLoss,
format!(
"Error: Failed to restart node service. \
Critical: Failed to save to the node registry. {err}"
),
)
})?;
}
}

Ok(Response::new(NodeServiceRestartResponse {}))
}
Expand Down Expand Up @@ -101,19 +123,6 @@ impl SafeNodeManagerDaemon {
.map_err(|err| eyre!("Could not load node registry: {err:?}"))?;
Ok(node_registry)
}

async fn restart_handler(
mut node_registry: NodeRegistry,
peer_id: PeerId,
retain_peer_id: bool,
) -> Result<()> {
let res = rpc::restart_node_service(&mut node_registry, peer_id, retain_peer_id).await;

// make sure to save the state even if the above fn fails.
node_registry.save()?;

res
}
}

// The SafeNodeManager trait returns `Status` as its error. So the actual logic is here and we can easily map the errors
Expand Down
9 changes: 4 additions & 5 deletions sn_node_manager/src/rpc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,13 @@ use sn_service_management::{
};

pub async fn restart_node_service(
node_registry: &mut NodeRegistry,
node_registry: NodeRegistry,
peer_id: PeerId,
retain_peer_id: bool,
) -> Result<()> {
let mut m = node_registry.clone();
let nodes_len = node_registry.nodes.len();
let current_node_mut = node_registry
let current_node_mut = m
.nodes
.iter_mut()
.find(|node| node.peer_id.is_some_and(|id| id == peer_id))
Expand Down Expand Up @@ -182,9 +183,7 @@ pub async fn restart_node_service(
VerbosityLevel::Normal,
);
service_manager.start().await?;
node_registry
.nodes
.push(service_manager.service.service_data.clone());
m.nodes.push(service_manager.service.service_data.clone());
};

Ok(())
Expand Down

0 comments on commit e8f5fba

Please sign in to comment.